new file mode 100644
--- /dev/null
+++ b/im/LICENSE.txt
@@ -0,0 +1,16 @@
+Official *binaries* of this product released by the Instantbird team
+(http://www.instantbird.com/) are made available under the GNU General
+Public License GPL version 2.0 or later.
+
+All of the *source code* for this product is available under licenses
+which are both free and open source.
+
+Most is available under one of the following:
+ - the Mozilla Public License (MPL) 2.0,
+ - the GNU General Public License (GPL) 2.0 or later,
+ - the GNU Lesser General Public License (LGPL) 2.1 or later.
+
+The remainder of the software is available under a variety of more permissive
+licenses.
+
+See about:license for details.
new file mode 100644
--- /dev/null
+++ b/im/Makefile.in
@@ -0,0 +1,20 @@
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(topsrcdir)/config/config.mk
+
+include $(topsrcdir)/config/rules.mk
+
+ifeq ($(OS_ARCH),WINNT)
+# For Windows build the uninstaller during the application build since the
+# uninstaller is included with the application for mar file generation.
+libs::
+ $(MAKE) -C installer/windows uninstaller
+endif
new file mode 100644
--- /dev/null
+++ b/im/app.mozbuild
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+app_libxul_dirs = []
+app_libxul_static_dirs = []
+
+if not CONFIG['LIBXUL_SDK']:
+ include('/toolkit/toolkit.mozbuild')
+
+add_tier_dir('app', CONFIG['MOZ_BRANDING_DIRECTORY'])
+
+add_tier_dir('app', '../chat')
+
+# Ensure extensions are built after chat/ so purplexpcom can build.
+if CONFIG['MOZ_EXTENSIONS']:
+ add_tier_dir('app', 'extensions')
+
+add_tier_dir('app', '../im')
new file mode 100644
--- /dev/null
+++ b/im/app/Makefile.in
@@ -0,0 +1,324 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+AB_CD = $(MOZ_UI_LOCALE)
+
+GRE_MILESTONE = $(shell $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build Milestone)
+GRE_BUILDID = $(shell $(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build BuildID)
+
+LICENSE_TXT_FILE = $(topsrcdir)/im/LICENSE.txt
+
+DEFINES += \
+ -DINSTANTBIRD_ICO=\"$(DIST)/branding/instantbird.ico\" \
+ -DAB_CD=$(AB_CD) \
+ -DGRE_MILESTONE=$(GRE_MILESTONE) \
+ -DGRE_BUILDID=$(GRE_BUILDID) \
+ $(NULL)
+
+MOZ_SOURCE_STAMP = $(firstword $(shell hg -R $(topsrcdir) parent --template="{node|short}\n" 2>/dev/null))
+ifdef MOZ_SOURCE_STAMP
+DEFINES += -DMOZ_SOURCE_STAMP="$(MOZ_SOURCE_STAMP)"
+endif
+
+SOURCE_REPO := $(shell hg -R $(topsrcdir) showconfig paths.default 2>/dev/null | sed -e "s/^ssh:/http:/")
+ifdef SOURCE_REPO
+DEFINES += -DMOZ_SOURCE_REPO="$(SOURCE_REPO)"
+endif
+
+ifdef MOZILLA_OFFICIAL
+DEFINES += -DOFFICIAL_BUILD=1
+endif
+
+PREF_JS_EXPORTS = \
+ $(srcdir)/profile/all-instantbird.js \
+ $(srcdir)/profile/channel-prefs.js \
+ $(NULL)
+
+ifneq (,$(filter OS2 WINNT,$(OS_ARCH)))
+STUBNAME = $(MOZ_APP_NAME)$(BIN_SUFFIX)
+else
+STUBNAME = $(MOZ_APP_NAME)-bin$(BIN_SUFFIX)
+endif
+
+DIST_FILES = application.ini
+
+LOCAL_INCLUDES += \
+ -I$(MOZILLA_SRCDIR)/toolkit/xre \
+ -I$(MOZILLA_SRCDIR)/xpcom/base \
+ $(NULL)
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+LIBS += $(DIST)/bin/XUL
+endif
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+TK_LIBS := -framework Cocoa $(TK_LIBS)
+endif
+
+APP_XPCOM_LIBS = $(XPCOM_GLUE_LDOPTS)
+
+LIBS += \
+ $(STATIC_COMPONENTS_LINKER_PATH) \
+ $(APP_XPCOM_LIBS) \
+ $(NSPR_LIBS) \
+ $(NULL)
+
+ifdef MOZ_JPROF
+LIBS += -ljprof
+endif
+
+ifdef MOZ_ENABLE_DBUS
+LIBS += $(MOZ_DBUS_GLIB_LIBS)
+endif
+
+ifndef MOZ_WINCONSOLE
+ifdef MOZ_DEBUG
+MOZ_WINCONSOLE = 1
+else
+MOZ_WINCONSOLE = 0
+endif
+endif
+
+# This switches $(INSTALL) to copy mode, like $(SYSINSTALL), so things that
+# shouldn't get 755 perms need $(IFLAGS1) for either way of calling nsinstall.
+NSDISTMODE = copy
+
+include $(topsrcdir)/config/config.mk
+
+ifdef _MSC_VER
+# Always enter a Windows program through wmain, whether or not we're
+# a console application.
+WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup
+endif
+
+ifdef NS_TRACE_MALLOC
+EXTRA_DSO_LIBS += tracemalloc
+endif
+
+ifeq ($(OS_ARCH),WINNT)
+# Extract the icons we care about embedding into the EXE
+embedded-icons::
+ $(call png2ico,$(topsrcdir)/chat/themes/available-16.png,0,0,16,available-16.ico)
+ $(call png2ico,$(topsrcdir)/chat/themes/away-16.png,0,0,16,away-16.ico)
+ $(call png2ico,$(topsrcdir)/chat/themes/offline-16.png,0,0,16,offline-16.ico)
+
+GARBAGE += available-16.ico away-16.ico offline-16.ico
+
+OS_LIBS += $(call EXPAND_LIBNAME,comctl32 comdlg32 uuid shell32 ole32 oleaut32 version winspool)
+OS_LIBS += $(call EXPAND_LIBNAME,usp10 msimg32)
+endif
+
+ifeq ($(OS_ARCH),WINNT)
+RCINCLUDE = splash.rc
+ifndef GNU_CC
+RCFLAGS += -DMOZ_INSTANTBIRD -I$(srcdir)
+else
+RCFLAGS += -DMOZ_INSTANTBIRD --include-dir $(srcdir)
+endif
+endif
+
+ifeq ($(OS_ARCH),OS2)
+RESFILE=splashos2.res
+RCFLAGS += -DMOZ_INSTANTBIRD
+ifdef DEBUG
+RCFLAGS += -DDEBUG
+endif
+RCFLAGS += -DINSTANTBIRD_ICO=\"$(DIST)/branding/instantbird.ico\"
+endif
+
+LIBS += $(JEMALLOC_LIBS)
+
+include $(topsrcdir)/config/rules.mk
+
+ifdef MOZILLA_OFFICIAL
+DEFINES += -DMOZILLA_OFFICIAL
+endif
+
+APP_UA_NAME = $(shell echo $(MOZ_APP_DISPLAYNAME) | sed -e's/[^A-Za-z]//g')
+DEFINES += -DAPP_VERSION="$(MOZ_APP_VERSION)" -DAPP_UA_NAME="$(APP_UA_NAME)"
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+LIBS += -framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework Carbon
+endif
+
+ifeq ($(OS_ARCH),WINNT)
+
+$(RESFILE): embedded-icons
+
+#
+# Control the default heap size.
+# This is the heap returned by GetProcessHeap().
+# As we use the CRT heap, the default size is too large and wastes VM.
+#
+# The default heap size is 1MB on Win32.
+# The heap will grow if need be.
+#
+# Set it to 256k. See bug 127069.
+#
+ifndef GNU_CC
+LDFLAGS += /HEAP:0x40000
+endif
+endif
+
+ifneq (,$(filter-out OS2 WINNT,$(OS_ARCH)))
+libs::
+ cp -p $(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)
+
+GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, all.js all-instantbird.js channel-prefs.js chat-prefs.js)
+endif # ! OS 2 or WinNT
+
+ifneq (,$(filter windows gtk gtk2,$(MOZ_WIDGET_TOOLKIT)))
+ifneq (,$(filter windows,$(MOZ_WIDGET_TOOLKIT)))
+ICON_SUFFIX=.ico
+else
+ICON_SUFFIX=.png
+endif
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ICON_DIR=gtk
+else
+ICON_DIR=$(MOZ_WIDGET_TOOLKIT)
+endif
+
+DESKTOP_ICONS = \
+ $(NULL)
+
+BRANDED_ICONS = \
+ blistWindow \
+ convWindow \
+ default \
+ $(NULL)
+
+ifeq ($(ICON_DIR),gtk)
+DESKTOP_ICONS_SMALL=$(patsubst %,%16,$(DESKTOP_ICONS))
+DESKTOP_ICONS_LARGE=$(patsubst %,%48,$(DESKTOP_ICONS))
+BRANDED_ICONS_SMALL=$(patsubst %,%16,$(BRANDED_ICONS))
+BRANDED_ICONS_LARGE=$(patsubst %,%48,$(BRANDED_ICONS))
+endif
+
+DESKTOP_ICON_FILES = $(addsuffix $(ICON_SUFFIX), $(DESKTOP_ICONS) $(DESKTOP_ICONS_SMALL) $(DESKTOP_ICONS_LARGE))
+BRANDED_ICON_FILES = $(addsuffix $(ICON_SUFFIX), $(BRANDED_ICONS) $(BRANDED_ICONS_SMALL) $(BRANDED_ICONS_LARGE))
+
+#libs:: $(addprefix icons/$(ICON_DIR)/,$(DESKTOP_ICON_FILES))
+# $(INSTALL) $^ $(DIST)/bin/chrome/icons/default
+
+libs:: $(addprefix $(DIST)/branding/,$(BRANDED_ICON_FILES))
+ $(INSTALL) $^ $(DIST)/bin/chrome/icons/default
+endif
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+libs::
+ $(INSTALL) $(DIST)/branding/default16.png $(DIST)/bin/chrome/icons/default
+endif
+
+ifneq (,$(filter-out WINNT Darwin,$(OS_ARCH)))
+$(MOZ_APP_NAME):: $(MOZILLA_DIR)/build/unix/mozilla.in $(GLOBAL_DEPS) $(DEPTH)/config/autoconf.mk
+ cat $< | sed -e "s|%MOZAPPDIR%|$(installdir)|" \
+ -e "s|%MOZ_APP_DISPLAYNAME%|$(MOZ_APP_DISPLAYNAME)|" > $@
+ chmod +x $@
+
+libs:: $(MOZ_APP_NAME)
+ $(INSTALL) $< $(DIST)/bin
+
+install:: $(MOZ_APP_NAME)
+ $(SYSINSTALL) $< $(DESTDIR)$(bindir)
+
+ifdef LIBXUL_SDK
+libs::
+ cp $(LIBXUL_DIST)/bin/xulrunner-stub$(BIN_SUFFIX) $(DIST)/bin/$(STUBNAME)
+endif
+
+GARBAGE += $(MOZ_APP_NAME)
+GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, all.js all-instantbird.js channel-prefs.js)
+endif
+
+ifneq (,$(filter gtk gtk2,$(MOZ_WIDGET_TOOLKIT)))
+ICON_FILES = \
+ $(DIST)/branding/default16.png \
+ $(DIST)/branding/mozicon128.png \
+ $(DIST)/branding/mozicon50.xpm \
+ $(DIST)/branding/mozicon16.xpm \
+ $(NULL)
+
+libs::
+ $(INSTALL) $(ICON_FILES) $(DIST)/bin/icons
+endif
+
+ifdef MOZ_SPLASHSCREEN
+ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
+libs::
+ if test -f $(DIST)/branding/splash.bmp; then \
+ $(INSTALL) $(IFLAGS1) $(DIST)/branding/splash.bmp $(DIST)/bin; \
+ fi
+endif
+endif
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),photon)
+LIBS += -lphexlib
+endif
+
+libs:: $(LICENSE_TXT_FILE)
+ifeq ($(OS_ARCH),WINNT)
+ $(EXIT_ON_ERROR) \
+ for file in $^; do \
+ $(PERL) -pe 's/(?<!\r)\n/\r\n/g;' < $$file > $(FINAL_TARGET)/`basename $$file`; \
+ done
+else
+ $(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)
+endif
+
+module.ver: module.ver.in $(DEPTH)/config/autoconf.mk
+ sed 's/@''MODULE_PRODUCTVERSION@/'`echo $(INSTANTBIRD_VERSION) | sed 's/[a-z].*//; s/\./,/g; s/^\([0-9]*,[0-9]*\)$$/\1,0/; s/^\([0-9]*,[0-9]*,[0-9]*\)$$/\1,0/'`'/;s/@''MODULE_PRODUCTVERSION_STRING@/$(INSTANTBIRD_VERSION)/' $< > $@
+
+_RC_STRING += -SRCDIR .
+module.rc: module.ver
+
+GARBAGE += module.ver
+
+libs:: $(srcdir)/profile/prefs.js
+ $(INSTALL) $(IFLAGS1) $^ $(DIST)/bin/defaults/profile
+
+# XXX This is a hack to ensure that we get the right xpcshell.ini for our tests.
+# mozilla-central does this in testing/xpcshell-tests which means that it is very
+# hard for anyone to specify anything else.
+libs::
+ $(INSTALL) $(topsrcdir)/im/test/xpcshell.ini $(MOZDEPTH)/_tests/xpcshell
+ cp $(topsrcdir)/im/test/xpcshell.ini $(MOZDEPTH)/_tests/xpcshell/all-test-dirs.list
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+
+AB := $(firstword $(subst -, ,$(AB_CD)))
+
+MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME)
+
+ifdef MOZ_DEBUG
+MAC_APP_NAME := $(MAC_APP_NAME)Debug
+endif
+
+tools:: $(PROGRAM)
+ mkdir -p $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS
+ rsync -a --exclude CVS --exclude "*.in" $(srcdir)/macbuild/Contents $(DIST)/$(MOZ_MACBUNDLE_NAME) --exclude English.lproj
+ mkdir -p $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/$(AB).lproj
+ rsync -a --exclude CVS --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/$(AB).lproj
+ sed -e "s/%APP_VERSION%/$(MOZ_APP_VERSION)/" -e "s/%MAC_APP_NAME%/$(MAC_APP_NAME)/" $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Info.plist
+ sed -e "s/%MAC_APP_NAME%/$(MAC_APP_NAME)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/$(AB).lproj/InfoPlist.strings
+ rsync -a $(DIST)/bin/ $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS
+ rm -f $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS/$(PROGRAM)
+ rsync -aL $(PROGRAM) $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS
+ cp -RL $(DIST)/branding/instantbird.icns $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/Resources/instantbird.icns
+ printf APPLMOZM > $(DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/PkgInfo
+
+clean clobber::
+ rm -rf $(DIST)/$(MOZ_MACBUNDLE_NAME)
+endif
+
+# Note that anything you do to dist/ down here isn't going to make it into the
+# Mac build, since it's already been copied over to the .app, above.
new file mode 100644
--- /dev/null
+++ b/im/app/application.ini
@@ -0,0 +1,31 @@
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0. If a copy of the MPL was not distributed with this
+; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#filter substitution
+[App]
+Name=Instantbird
+Version=@APP_VERSION@
+BuildID=@GRE_BUILDID@
+#ifdef MOZ_SOURCE_REPO
+SourceRepository=@MOZ_SOURCE_REPO@
+#endif
+#ifdef MOZ_SOURCE_STAMP
+SourceStamp=@MOZ_SOURCE_STAMP@
+#endif
+Copyright=Copyright (c) 2007-2013 Contributors
+ID={33cb9019-c295-46dd-be21-8c4936574bee}
+
+[Gecko]
+MinVersion=@GRE_MILESTONE@
+MaxVersion=@GRE_MILESTONE@
+
+[XRE]
+EnableExtensionManager=1
+EnableProfileMigrator=1
+
+[Crash Reporter]
+#if MOZILLA_OFFICIAL
+Enabled=1
+#endif
+ServerURL=https://crash-reporter.instantbird.org/submit/
new file mode 100644
--- /dev/null
+++ b/im/app/instantbird.exe.manifest
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="1.0.0.0"
+ processorArchitecture="*"
+ name="Instantbird"
+ type="win32"
+/>
+<description>Instantbird</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="*"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
+ <ms_asmv3:security>
+ <ms_asmv3:requestedPrivileges>
+ <ms_asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false" />
+ </ms_asmv3:requestedPrivileges>
+ </ms_asmv3:security>
+</ms_asmv3:trustInfo>
+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+ <application>
+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
+ </application>
+ </compatibility>
+</assembly>
new file mode 100644
--- /dev/null
+++ b/im/app/macbuild/Contents/Info.plist.in
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>instantbird-bin</string>
+ <key>CFBundleGetInfoString</key>
+ <string>%MAC_APP_NAME% %APP_VERSION%, © 1998-2013 Contributors</string>
+ <key>CFBundleIconFile</key>
+ <string>instantbird</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.instantbird</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>%MAC_APP_NAME%</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>%APP_VERSION%</string>
+ <key>CFBundleSignature</key>
+ <string>MOZM</string>
+ <key>CFBundleVersion</key>
+ <string>%APP_VERSION%</string>
+ <key>NSAppleScriptEnabled</key>
+ <true/>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.6.0</string>
+ <key>NSSupportsAutomaticGraphicsSwitching</key>
+ <true/>
+ <key>NSPrincipalClass</key>
+ <string>GeckoNSApplication</string>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/im/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in
@@ -0,0 +1,5 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+CFBundleName = "%MAC_APP_NAME%";
new file mode 100644
--- /dev/null
+++ b/im/app/module.ver.in
@@ -0,0 +1,9 @@
+WIN32_MODULE_DESCRIPTION=Instantbird
+WIN32_MODULE_PRODUCTNAME=Instantbird
+WIN32_MODULE_NAME=Instantbird
+WIN32_MODULE_PRODUCTVERSION=@MODULE_PRODUCTVERSION@
+WIN32_MODULE_PRODUCTVERSION_STRING=@MODULE_PRODUCTVERSION_STRING@
+WIN32_MODULE_COPYRIGHT=©Instantbird, Mozilla and libpurple Developers, according to the GPL 2.0 license, as applicable.
+WIN32_MODULE_COMPANYNAME=Instantbird
+WIN32_MODULE_TRADEMARKS=Instantbird
+WIN32_MODULE_COMMENT=Instantbird Instant Messaging Client
new file mode 100644
--- /dev/null
+++ b/im/app/moz.build
@@ -0,0 +1,10 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['profile']
+
+if not CONFIG['LIBXUL_SDK']:
+ PROGRAM = CONFIG['MOZ_APP_NAME']
+ SOURCES += ['nsMain.cpp']
new file mode 100644
--- /dev/null
+++ b/im/app/nsMain.cpp
@@ -0,0 +1,71 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsXULAppAPI.h"
+#ifdef XP_WIN
+#include <windows.h>
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "nsCOMPtr.h"
+#include "nsIFile.h"
+#include "nsStringGlue.h"
+
+#ifdef XP_WIN
+#include "nsWindowsWMain.cpp"
+#endif
+
+static void Output(const char *fmt, ... )
+{
+ va_list ap;
+ va_start(ap, fmt);
+
+#if defined(XP_WIN) && !MOZ_WINCONSOLE
+ PRUnichar msg[2048];
+ _vsnwprintf(msg, sizeof(msg)/sizeof(msg[0]), NS_ConvertUTF8toUTF16(fmt).get(), ap);
+ MessageBoxW(NULL, msg, L"XULRunner", MB_OK | MB_ICONERROR);
+#else
+ vfprintf(stderr, fmt, ap);
+#endif
+
+ va_end(ap);
+}
+
+/**
+ * A helper class which calls NS_LogInit/NS_LogTerm in its scope.
+ */
+class ScopedLogging
+{
+public:
+ ScopedLogging() { NS_LogInit(); }
+ ~ScopedLogging() { NS_LogTerm(); }
+};
+
+int main(int argc, char* argv[])
+{
+ ScopedLogging log;
+
+ nsCOMPtr<nsIFile> appini;
+ nsresult rv = XRE_GetBinaryPath(argv[0], getter_AddRefs(appini));
+ if (NS_FAILED(rv)) {
+ Output("Couldn't calculate the application directory.");
+ return 255;
+ }
+ appini->SetNativeLeafName(NS_LITERAL_CSTRING("application.ini"));
+
+ nsXREAppData *appData;
+ rv = XRE_CreateAppData(appini, &appData);
+ if (NS_FAILED(rv)) {
+ Output("Couldn't read application.ini");
+ return 255;
+ }
+
+ int result = XRE_main(argc, argv, appData, 0);
+ XRE_FreeAppData(appData);
+ return result;
+}
new file mode 100644
--- /dev/null
+++ b/im/app/profile/Makefile.in
@@ -0,0 +1,30 @@
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+FILES := \
+ mimeTypes.rdf \
+ localstore.rdf \
+ $(NULL)
+
+libs:: $(FILES)
+ $(SYSINSTALL) $^ $(DIST)/bin/defaults/profile
+ $(SYSINSTALL) $^ $(DIST)/bin/defaults/profile/US
+
+install:: $(FILES)
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/defaults/profile
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/defaults/profile/US
+
+ifneq (,$(filter gtk2 mac cocoa, $(MOZ_WIDGET_TOOLKIT)))
+DEFINES += -DHAVE_SHELL_SERVICE=1
+endif
new file mode 100644
--- /dev/null
+++ b/im/app/profile/all-instantbird.js
@@ -0,0 +1,317 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pref("toolkit.defaultChromeURI", "chrome://instantbird/content/blist.xul");
+pref("toolkit.singletonWindowType", "Messenger:blist");
+#ifdef XP_MACOSX
+pref("browser.hiddenWindowChromeURL", "chrome://instantbird/content/hiddenWindow.xul");
+#endif
+
+#expand pref("general.useragent.extra.instantbird", "Instantbird/__APP_VERSION__");
+
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+#define UNIX_BUT_NOT_MAC
+#endif
+#endif
+
+pref("general.smoothScroll", false);
+#ifdef UNIX_BUT_NOT_MAC
+pref("general.autoScroll", false);
+#else
+pref("general.autoScroll", true);
+#endif
+
+// this will automatically enable inline spellchecking (if it is available) for
+// editable elements in HTML
+// 0 = spellcheck nothing
+// 1 = check multi-line controls [default]
+// 2 = check multi/single line controls
+pref("layout.spellcheckDefault", 1);
+
+pref("messenger.accounts.convertOldPasswords", true);
+pref("messenger.accounts.promptOnDelete", true);
+
+pref("messenger.buddies.showOffline", false);
+pref("messenger.buddies.hideTagPrompt", true);
+
+pref("messenger.conversations.openInTabs", true);
+pref("messenger.conversations.useSeparateWindowsForMUCs", false);
+pref("messenger.conversations.doubleClickToReply", true);
+
+pref("messenger.conversations.showNicks", true);
+// Timespan (in seconds) that a MUC nick is marked active after speaking.
+// -1 = keep active forever
+pref("messenger.conversations.nickActiveTimespan", 3600);
+
+pref("messenger.options.getAttentionOnNewMessages", true);
+pref("messenger.options.notifyOfNewMessages", false);
+#ifdef XP_MACOSX
+pref("messenger.options.showUnreadCountInDock", true);
+#else
+// For *nix and Windows set the minimize to tray options.
+// Default to minimize on close
+pref("extensions.mintrayr.minimizeon", 2);
+pref("extensions.mintrayr.alwaysShowTrayIcon", true);
+pref("extensions.mintrayr.startMinimized", false);
+#ifdef XP_UNIX
+// For Linux, use single click.
+pref("extensions.mintrayr.singleClickRestore", true);
+#else
+// For Windows, use double click.
+pref("extensions.mintrayr.singleClickRestore", false);
+#endif
+#endif
+
+// Whether message related sounds should be played at all. If this is enabled
+// then the more specific prefs are checked as well.
+pref("messenger.options.playSounds.message", true);
+// Specifies whether each message event should trigger a sound for incoming
+// and outgoing messages, or when your nickname is mentioned in a chat.
+pref("messenger.options.playSounds.outgoing", true);
+pref("messenger.options.playSounds.incoming", true);
+pref("messenger.options.playSounds.alert", true);
+// Whether contact list related sounds should be played at all. If this is
+// enabled then the more specific prefs are checked as well.
+pref("messenger.options.playSounds.blist", false);
+// Specifies whether sounds should be played on login/logout events.
+pref("messenger.options.playSounds.login", true);
+pref("messenger.options.playSounds.logout", true);
+
+pref("font.default.x-western", "sans-serif");
+pref("font.default.x-unicode", "sans-serif");
+pref("font.default.x-central-euro", "sans-serif");
+pref("font.default.x-cyrillic", "sans-serif");
+#ifdef XP_MACOSX
+pref("font.name.sans-serif.x-unicode", "Lucida Grande");
+pref("font.name.sans-serif.x-western", "Lucida Grande");
+pref("font.name.sans-serif.x-central-euro", "Lucida Grande");
+pref("font.name.sans-serif.x-cyrillic", "Lucida Grande");
+#endif
+pref("font.size.variable.x-western", 13);
+pref("font.size.variable.x-unicode", 13);
+pref("font.size.variable.x-central-euro", 13);
+pref("font.size.variable.x-cyrillic", 13);
+
+pref("messenger.proxies", "");
+pref("messenger.globalProxy", "none");
+pref("messenger.warnOnQuit", true);
+
+#ifdef XP_WIN
+pref("browser.preferences.instantApply", false);
+#else
+pref("browser.preferences.instantApply", true);
+#endif
+#ifdef XP_MACOSX
+pref("browser.preferences.animateFadeIn", true);
+#else
+pref("browser.preferences.animateFadeIn", false);
+#endif
+
+pref("browser.zoom.full", true);
+pref("conversation.zoomLevel", "1.0");
+
+pref("accessibility.typeaheadfind", false);
+pref("accessibility.typeaheadfind.timeout", 5000);
+pref("accessibility.typeaheadfind.linksonly", false);
+pref("accessibility.typeaheadfind.flashBar", 1);
+
+// Whether or not app updates are enabled
+pref("app.update.enabled", true);
+
+// This preference turns on app.update.mode and allows automatic download and
+// install to take place. We use a separate boolean toggle for this to make
+// the UI easier to construct.
+pref("app.update.auto", true);
+
+// Defines how the Application Update Service notifies the user about updates:
+//
+// AUM Set to: Minor Releases: Major Releases:
+// 0 download no prompt download no prompt
+// 1 download no prompt download no prompt if no incompatibilities
+// 2 download no prompt prompt
+//
+// See chart in nsUpdateService.js.in for more details
+//
+pref("app.update.mode", 1);
+
+// If set to true, the Update Service will present no UI for any event.
+pref("app.update.silent", false);
+
+// If set to true, the Update Service will apply updates in the background
+// when it finishes downloading them.
+pref("app.update.staging.enabled", true);
+
+// Update service URL:
+// You do not need to use all the %VAR% parameters. Use what you need, %PRODUCT%,%VERSION%,%BUILD_ID%,%CHANNEL% for example
+pref("app.update.url", "https://update.instantbird.org/1/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/update.xml");
+
+// URL user can browse to manually if for some reason all update installation
+// attempts fail.
+pref("app.update.url.manual", "http://www.instantbird.com/download.html");
+
+// A default value for the "More information about this update" link
+// supplied in the "An update is available" page of the update wizard.
+pref("app.update.url.details", "http://www.instantbird.com/");
+
+// User-settable override to app.update.url for testing purposes.
+//pref("app.update.url.override", "");
+
+// Interval: Time between checks for a new version (in seconds)
+// default=1 day
+pref("app.update.interval", 86400);
+
+// Interval: Time before prompting the user to download a new version that
+// is available (in seconds) default=1 day
+pref("app.update.nagTimer.download", 86400);
+
+// Interval: Time before prompting the user to restart to install the latest
+// download (in seconds) default=30 minutes
+pref("app.update.nagTimer.restart", 1800);
+
+// Whether or not we show a dialog box informing the user that the update was
+// successfully applied. This is off in Firefox by default since we show a
+// upgrade start page instead! Other apps may wish to show this UI, and supply
+// a whatsNewURL field in their brand.properties that contains a link to a page
+// which tells users what's new in this new update.
+pref("app.update.showInstalledUI", false);
+
+// 0 = suppress prompting for incompatibilities if there are updates available
+// to newer versions of installed addons that resolve them.
+// 1 = suppress prompting for incompatibilities only if there are VersionInfo
+// updates available to installed addons that resolve them, not newer
+// versions.
+pref("app.update.incompatible.mode", 0);
+
+// Dictionary download preference
+pref("browser.dictionaries.download.url", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/dictionaries/");
+
+// search engines URL
+pref("browser.search.searchEnginesURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/search-engines/");
+
+// pointer to the default engine name. Keep this empty so that the
+// first engine listed in the engine manager is used instead
+pref("browser.search.defaultenginename", "");
+
+// disable logging for the search service by default
+pref("browser.search.log", false);
+
+// Ordering of Search Engines in the Engine list.
+pref("browser.search.order.1", "chrome://instantbird/locale/region.properties");
+pref("browser.search.order.2", "chrome://instantbird/locale/region.properties");
+
+// send ping to the server to update
+pref("browser.search.update", true);
+
+// disable logging for the search service update system by default
+pref("browser.search.update.log", false);
+
+// Check whether we need to perform engine updates every 6 hours
+pref("browser.search.updateinterval", 6);
+
+/* Extension manager */
+pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
+pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul");
+pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul");
+pref("xpinstall.dialog.progress.type.skin", "Extension:Manager");
+pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager");
+pref("extensions.dss.enabled", false);
+pref("extensions.dss.switchPending", false);
+pref("extensions.ignoreMTimeChanges", false);
+pref("extensions.logging.enabled", false);
+pref("general.skins.selectedSkin", "classic/1.0");
+
+pref("extensions.update.enabled", true);
+pref("extensions.update.interval", 86400);
+pref("extensions.update.url", "https://addons.instantbird.org/services/update.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%");
+pref("extensions.update.autoUpdateDefault", true);
+
+// Preferences for the Get Add-ons pane
+pref("extensions.getAddons.cache.enabled", false);
+pref("extensions.getAddons.browseAddons", "https://addons.instantbird.org/%LOCALE%/%APP%");
+pref("extensions.getAddons.maxResults", 5);
+pref("extensions.getAddons.recommended.browseURL", "https://addons.instantbird.org/%LOCALE%/%APP%/recommended");
+pref("extensions.getAddons.recommended.url", "https://services.instantbird.org/%LOCALE%/%APP%/api/%API_VERSION%/list/featured/all/10/%OS%/%VERSION%");
+pref("extensions.getAddons.search.browseURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/search?q=%TERMS%");
+pref("extensions.getAddons.search.url", "https://services.instantbird.org/%LOCALE%/%APP%/api/%API_VERSION%/search/%TERMS%/all/10/%OS%/%VERSION%");
+pref("extensions.webservice.discoverURL", "chrome://instantbird/content/extensions-discover.xul");
+
+pref("extensions.getMoreExtensionsURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/extensions/");
+pref("extensions.getMoreThemesURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/themes/");
+pref("extensions.getMorePluginsURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/plugins/");
+pref("extensions.getMoreMessageStylesURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/messagestyles/");
+pref("extensions.getMoreEmoticonsURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/emoticons/");
+pref("extensions.getMoreProtocolsURL", "https://add-ons.instantbird.org/%LOCALE%/%APP%/%VERSION%/protocols/");
+
+// suppress external-load warning for standard browser schemes
+pref("network.protocol-handler.warn-external.http", false);
+pref("network.protocol-handler.warn-external.https", false);
+pref("network.protocol-handler.warn-external.ftp", false);
+
+// don't load links inside Instantbird
+pref("network.protocol-handler.expose-all", false);
+// Although we allow these to be exposed internally, there are various places
+// (e.g. message pane) where we may divert them out to external applications.
+pref("network.protocol-handler.expose.about", true);
+pref("network.protocol-handler.expose.http", true);
+pref("network.protocol-handler.expose.https", true);
+
+// expose javascript: so that message themes can use it.
+// javascript: links inside messages are filtered out.
+pref("network.protocol-handler.expose.javascript", true);
+
+// 0-Accept, 1-dontAcceptForeign, 2-dontUse
+// Reject all cookies, so that several twitter OAuth dialogs can work
+// during the same session. (See bug 875)
+pref("network.cookie.cookieBehavior", 2);
+
+// The breakpad report server to link to in about:crashes
+pref("breakpad.reportURL", "http://crash-stats.instantbird.com/report/index/");
+
+// We have an Error Console menu item by default so let's display chrome errors
+pref("javascript.options.showInConsole", true);
+#ifdef DEBUG
+// In debug builds, also display warnings by default
+pref("javascript.options.strict", true);
+
+// Having to click through the "I'll be careful" button all the time
+// is annoying, and users of debug builds are expected to know what
+// they are doing...
+pref("general.warnOnAboutConfig", false);
+
+// In debug builds, disable the XUL cache by default
+pref("nglayout.debug.disable_xul_cache", true);
+pref("nglayout.debug.disable_xul_fastload", true);
+#else
+// So that we can enable dump easily from about:config...
+pref("browser.dom.window.dump.enabled", false);
+#endif
+
+// Tabbed browser
+pref("browser.tabs.autoHide", false);
+pref("browser.tabs.warnOnClose", true);
+pref("browser.tabs.tabMinWidth", 100);
+pref("browser.tabs.tabMaxWidth", 250);
+pref("browser.tabs.tabClipWidth", 140);
+
+// Where to show tab close buttons:
+// 0 on active tab only
+// 1 on all tabs until tabClipWidth is reached, then active tab only
+// 2 no close buttons at all
+// 3 at the end of the tabstrip
+pref("browser.tabs.closeButtons", 1);
+
+#expand pref("chat.irc.defaultQuitMessage", "Instantbird __APP_VERSION__ -- http://www.instantbird.com");
+// If this is false, requestRoomInfo will throw NS_ERROR_NOT_IMPLEMENTED.
+pref("chat.irc.automaticList", true);
+
+pref("chat.twitter.consumerKey", "TSuyS1ieRAkB3qWv8yyEw");
+pref("chat.twitter.consumerSecret", "DKtKaSf5a7pBNhdBsSZHTnI5Y03hRlPFYWmb4xXBlkU");
+
+// Comma separated list of prpl ids that should use libpurple even if there is
+// a JS implementation. This is used to land JS-prpls pref'ed off in nightlies.
+pref("chat.prpls.forcePurple", "prpl-jabber,prpl-yahoo,prpl-yahoojp");
+
+// Whether to parse log files for conversation statistics.
+pref("statsService.parseLogsForStats", true);
new file mode 100644
--- /dev/null
+++ b/im/app/profile/channel-prefs.js
@@ -0,0 +1,6 @@
+#filter substitution
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pref("app.update.channel", "@MOZ_UPDATE_CHANNEL@");
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/Makefile.in
@@ -0,0 +1,12 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/installed-extensions.txt
@@ -0,0 +1,1 @@
+theme,{972ce4c6-7e08-4474-a285-3208198ce6fd}
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['{972ce4c6-7e08-4474-a285-3208198ce6fd}']
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in
@@ -0,0 +1,31 @@
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+include $(topsrcdir)/config/rules.mk
+
+DEFINES += -DINSTANTBIRD_VERSION=$(INSTANTBIRD_VERSION)
+
+FILES := \
+ install.rdf \
+ chrome.manifest \
+ preview.png \
+ $(NULL)
+
+install.rdf: install.rdf.in
+ $(call py_action,preprocessor,$(DEFINES) $(ACDEFINES) $< -o $@)
+
+libs:: $(FILES)
+ $(INSTALL) $(foreach f,$^,"$f") $(DIST)/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
+
+install:: $(FILES)
+ $(SYSINSTALL) $(IFLAGS1) $(foreach f,$^,"$f") $(DESTDIR)$(mozappdir)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
+
+GARBAGE += install.rdf
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
@@ -0,0 +1,1 @@
+
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+#filter substitution
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>{972ce4c6-7e08-4474-a285-3208198ce6fd}</em:id>
+ <em:version>@INSTANTBIRD_VERSION@</em:version>
+
+ <!-- Target Application this theme can install into,
+ with minimum and maximum supported versions. -->
+ <em:targetApplication>
+ <Description>
+ <em:id>{33cb9019-c295-46dd-be21-8c4936574bee}</em:id>
+ <em:minVersion>@INSTANTBIRD_VERSION@</em:minVersion>
+ <em:maxVersion>@INSTANTBIRD_VERSION@</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <!-- Front End MetaData -->
+ <em:name>Instantbird (default)</em:name>
+ <em:description>The default theme.</em:description>
+
+ <!-- EXTENSION AUTHORS!
+ DO NOT COPY THIS PROPERTY INTO YOUR INSTALL RDF FILES
+ It will cause users not to be informed of incompatibilities
+ with your extension when they are updated with Software Update
+ and your extension will become unavailable to them!
+ -->
+ <em:appManaged>true</em:appManaged>
+
+ <em:locked>true</em:locked>
+
+ <!-- Front End Integration Hooks (used by Theme Manager)-->
+ <em:creator>Instantbird</em:creator>
+ <em:contributor>Mozilla, Instantbird and Pidgin Contributors</em:contributor>
+
+ <em:internalName>classic/1.0</em:internalName>
+ </Description>
+
+</RDF>
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/moz.build
@@ -0,0 +1,4 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e36179e8d8fb32ab57d283fb9bd8dc8976fe0f47
GIT binary patch
literal 13867
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
new file mode 100644
--- /dev/null
+++ b/im/app/profile/localstore.rdf
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<RDF:RDF
+ xmlns:NC="http://home.netscape.com/NC-rdf#"
+ xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+</RDF:RDF>
new file mode 100644
--- /dev/null
+++ b/im/app/profile/mimeTypes.rdf
@@ -0,0 +1,115 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+<!--
+ This file is used as a persistent data store for helper application
+ information about both MIME type and protocol scheme helpers.
+
+ The root of the data are the two containers
+ <RDF:Seq about="urn:mimetypes:root"/> and <RDF:Seq about="urn:schemes:root"/>.
+
+ These contain one <RDF:li/> entry per MIME type/protocol. Each <RDF:li/> entry
+ corresponds to a "urn:<class>:<type>" resource, where <class> is either
+ "mimetype" or "scheme" and <type> is either a MIME type in "major/minor" format
+ or a scheme. For example, for HTML we would have "urn:mimetype:text/html",
+ while for mailto: we would have "urn:scheme:mailto".
+
+ Typically, this resource will be in the <RDF:Description/> node which has the
+ corresponding "about" attribute.
+
+ Each "urn:<class>:<type>" resource can have the following properties:
+
+ NC:Value - the MIME type or scheme string
+ NC:editable - a "true" or "false" depending on whether this entry is
+ editable
+ NC:description - a description of the type ("HTML Document" for text/html)
+ NC:fileExtensions - for MIME types, there will be one of these properties
+ per extension that corresponds to this MIME type,
+ each one having a single extension as its value.
+ NC:handlerProp - the way the type should be handled. This corresponds to a
+ "urn:<class>:handler:<type>" resource. Eg, the way HTML is
+ handled would be stored in the
+ "urn:mimetype:handler:text/html" resource.
+
+ Each "urn:<class>:handler:<type>" resource can have the following properties:
+
+ NC:useSystemDefault - "true" if we should handle per default OS setting,
+ "false" or not set otherwise
+ NC:saveToDisk - "true" if the data should be saved to disk, "false" or not
+ set otherwise.
+ (Note - if both of these are false, that means "open in helper app")
+ NC:alwaysAsk - "true" if the user should always be prompted before handling
+ data of this type, false otherwise.
+ NC:externalApplication - the preferred helper application to use for this
+ type. This corresponds to a
+ "urn:<class>:externalApplication:<type>" resource.
+ NC:possibleApplication - a helper application that can be used for this type.
+ Since there can be multiple possible applications,
+ there can be multiple assertions in the graph with
+ this property for a given handler resource.
+
+ Each "urn:<class>:externalApplication:<type>" resource, and each resource
+ that represents a possible application, can have the following property:
+
+ NC:prettyName - the "pretty name" of the application ("Acrobat Reader" for
+ /usr/bin/acroread, eg).
+
+ If the resource represents a local application, then it can have the following
+ property:
+
+ NC:path - the path to the application on the local filesystem, for example
+ /usr/bin/test or C:\windows\system32\cmd.exe.
+
+ If the resource represents a web application, then it can have the following
+ property:
+
+ NC:uriTemplate - a URI pointing to the web application to which the type
+ should be handed off, with %s in the template representing
+ the place where the content should be inserted. For example,
+ here is a URI template for a service that lets you email
+ an address in a mailto: link:
+ http://www.example.com/sendmail?link=%s
+-->
+
+<RDF:RDF xmlns:NC="http://home.netscape.com/NC-rdf#"
+ xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <RDF:Seq RDF:about="urn:schemes:root">
+ <RDF:li RDF:resource="urn:scheme:http"/>
+ <RDF:li RDF:resource="urn:scheme:https"/>
+ <RDF:li RDF:resource="urn:scheme:ftp"/>
+ </RDF:Seq>
+ <RDF:Description RDF:about="urn:scheme:handler:ftp"
+ NC:useSystemDefault="true"
+ NC:alwaysAsk="false" />
+ <RDF:Description RDF:about="urn:scheme:handler:https"
+ NC:useSystemDefault="true"
+ NC:alwaysAsk="false" />
+ <RDF:Description RDF:about="urn:scheme:handler:http"
+ NC:useSystemDefault="true"
+ NC:alwaysAsk="false" />
+ <RDF:Description RDF:about="urn:mimetypes">
+ <NC:MIME-types RDF:resource="urn:mimetypes:root"/>
+ </RDF:Description>
+ <RDF:Seq RDF:about="urn:mimetypes:root">
+ </RDF:Seq>
+ <RDF:Description RDF:about="urn:scheme:ftp"
+ NC:value="ftp">
+ <NC:handlerProp RDF:resource="urn:scheme:handler:ftp"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:schemes">
+ <NC:Protocol-Schemes RDF:resource="urn:schemes:root"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:root"
+ NC:en-US_defaultHandlersVersion="-1" />
+ <RDF:Description RDF:about="urn:scheme:https"
+ NC:value="https">
+ <NC:handlerProp RDF:resource="urn:scheme:handler:https"/>
+ </RDF:Description>
+ <RDF:Description RDF:about="urn:scheme:http"
+ NC:value="http">
+ <NC:handlerProp RDF:resource="urn:scheme:handler:http"/>
+ </RDF:Description>
+</RDF:RDF>
new file mode 100644
--- /dev/null
+++ b/im/app/profile/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['extensions']
new file mode 100644
--- /dev/null
+++ b/im/app/profile/prefs.js
@@ -0,0 +1,14 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+# Mozilla User Preferences
+
+/* Do not edit this file.
+ *
+ * If you make changes to this file while the browser is running,
+ * the changes will be overwritten when the browser exits.
+ *
+ * To make a manual change to preferences, you can visit the URL about:config
+ * For more information, see http://www.mozilla.org/unix/customizing.html#prefs
+ */
new file mode 100644
--- /dev/null
+++ b/im/app/splash.rc
@@ -0,0 +1,63 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#include <windows.h>
+#include "nsNativeAppSupportWin.h"
+
+1 24 "instantbird.exe.manifest"
+
+#define IDI_APPICON 1
+#define IDI_DOCUMENT 2
+#ifndef IDI_APPLICATION
+#define IDI_APPLICATION 32512
+#endif
+
+// Program icon.
+IDI_APPICON ICON INSTANTBIRD_ICO
+2 ICON "available-16.ico"
+3 ICON "away-16.ico"
+4 ICON "offline-16.ico"
+IDI_APPLICATION ICON INSTANTBIRD_ICO
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifdef DEBUG
+ IDS_STARTMENU_APPNAME, "@MOZ_APP_DISPLAYNAME@ Debug"
+#else
+ IDS_STARTMENU_APPNAME, "@MOZ_APP_DISPLAYNAME@"
+#endif
+END
+
+#ifdef MOZ_STATIC_BUILD
+
+// XXX This code is copied from resource.h and widget.rc. It's a work-around
+// for the limitation that only one resource file can be used in an .exe. We
+// should develop a method, for static builds only, to combine multiple .rc
+// files into a single .rc file, and then use that to build the single .res
+// file for the .exe.
+
+#define IDC_GRAB 4101
+#define IDC_GRABBING 4102
+#define IDC_CELL 4103
+#define IDC_COPY 4104
+#define IDC_ALIAS 4105
+#define IDC_ZOOMIN 4106
+#define IDC_ZOOMOUT 4107
+#define IDC_COLRESIZE 4108
+#define IDC_ROWRESIZE 4109
+#define IDC_VERTICALTEXT 4110
+#define IDC_NONE 4112
+
+IDC_GRAB CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/grab.cur"
+IDC_GRABBING CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/grabbing.cur"
+IDC_CELL CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/cell.cur"
+IDC_COPY CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/copy.cur"
+IDC_ALIAS CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/aliasb.cur"
+IDC_ZOOMIN CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/zoom_in.cur"
+IDC_ZOOMOUT CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/zoom_out.cur"
+IDC_COLRESIZE CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/col_resize.cur"
+IDC_ROWRESIZE CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/row_resize.cur"
+IDC_VERTICALTEXT CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/vertical_text.cur"
+IDC_NONE CURSOR DISCARDABLE "../../mozilla/widget/src/build/res/none.cur"
+#endif
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/Makefile.in
@@ -0,0 +1,56 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Branding Makefile for nightlies/unofficial branding
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+export::
+ $(NSINSTALL) -D $(DIST)/branding
+ifeq ($(OS_ARCH),WINNT)
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/instantbird.ico
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/app.ico
+ cp $(srcdir)/branding.nsi $(DIST)/branding/branding.nsi
+ cp $(srcdir)/../nightly/wizHeader.bmp $(DIST)/branding/wizHeader.bmp
+ cp $(srcdir)/../nightly/wizHeaderRTL.bmp $(DIST)/branding/wizHeaderRTL.bmp
+ cp $(srcdir)/../nightly/wizWatermark.bmp $(DIST)/branding/wizWatermark.bmp
+endif
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+ cp $(srcdir)/instantbird.icns $(DIST)/branding/instantbird.icns
+ cp $(srcdir)/dsstore $(DIST)/branding/dsstore
+ cp $(srcdir)/background.png $(DIST)/branding/background.png
+ cp $(srcdir)/disk.icns $(DIST)/branding/disk.icns
+# cp $(srcdir)/license.r $(DIST)/branding/license.r
+endif
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ cp $(srcdir)/mozicon128.png $(DIST)/branding/mozicon128.png
+ cp $(srcdir)/mozicon16.xpm $(DIST)/branding/mozicon16.xpm
+ cp $(srcdir)/mozicon50.xpm $(DIST)/branding/mozicon50.xpm
+ cp $(srcdir)/default16.png $(DIST)/branding/default16.png
+endif
+
+# Now sort out the branding specific icons
+ifeq ($(OS_ARCH),WINNT)
+ cp $(srcdir)/windows/blistWindow.ico $(DIST)/branding/blistWindow.ico
+ cp $(srcdir)/windows/convWindow.ico $(DIST)/branding/convWindow.ico
+ cp $(srcdir)/windows/default.ico $(DIST)/branding/default.ico
+endif
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ cp $(srcdir)/gtk/blistWindow.png $(DIST)/branding/blistWindow.png
+ cp $(srcdir)/gtk/blistWindow16.png $(DIST)/branding/blistWindow16.png
+ cp $(srcdir)/gtk/blistWindow48.png $(DIST)/branding/blistWindow48.png
+ cp $(srcdir)/gtk/convWindow.png $(DIST)/branding/convWindow.png
+ cp $(srcdir)/gtk/convWindow16.png $(DIST)/branding/convWindow16.png
+ cp $(srcdir)/gtk/convWindow48.png $(DIST)/branding/convWindow48.png
+ cp $(srcdir)/gtk/default.png $(DIST)/branding/default.png
+ cp $(srcdir)/gtk/default16.png $(DIST)/branding/default16.png
+ cp $(srcdir)/gtk/default48.png $(DIST)/branding/default48.png
+endif
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e52f31d051010215470ae91fc84a6d29d8645efa
GIT binary patch
literal 1143
zc%17D@N?(olHy`uVBq!ia0y~yV4MKNIvh+uk)*3dQyCao>^xl@Ln`LHxx&cHz`$`p
zA^rckS&yY#68IF7*cF^29NIQC@FX%y9%3?TVNK!SJ|Q4BK~YD+nS2RZb^!_u=wWAI
z`2Qd1T27!B8W#Lte_QYcM=NU%2lovDu?>nk3C<A*fXa9i8Kn;~nY9eC1k0#nM;$vX
f9ox$QQpU{S^vQqmo7HMxfLsPoS3j3^P6<r_lQ?mb
new file mode 100755
--- /dev/null
+++ b/im/branding/halloween/branding.nsi
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# NSIS defines for nightly builds.
+
+# BrandFullNameInternal is used for some registry and file system values that
+# should not contain release that may be in the BrandFullName (e.g. Beta 1, etc.)
+!define BrandFullNameInternal "Instantbird"
+!define CompanyName "Instantbird"
+!define URLInfoAbout "http://www.instantbird.com/"
+!define URLUpdateInfo "http://www.instantbird.com/"
+
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/configure.sh
@@ -0,0 +1,5 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+MOZ_APP_DISPLAYNAME=Instantbird
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5d849c960452dcd686787a2250142408f74e4261
GIT binary patch
literal 15416
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
X4(rMDL;v@WU@$2$dC^K?y@3A#wC1?I
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..94d9124a3500e9b495b89a6a20d92085f53444d8
GIT binary patch
literal 764
zc%17D@N?(olHy`uVBq!ia0y~yVAKJ!jX2nV<g;tfw15;#x}&cn1H<|g=B!;Wfqcml
z*NBqf{Irtt#G+IN$CUh}R0Yr6#Prml)Wnp^!jq{s3=B+to-U3d6}OW9{Qqx%SVMw!
zae@dBD}#W8&tgXdF1Ldk5?Txj4Q||P0zte9j0}t>Q3<_GKwcXU1IL1kOxYqmKwb)i
z14FM^1W<ENlOi(%Q^uA9QedMbfkrK6y#_Y;1VaOZl<o$Qp{&kq3@ifN0>=Gp5KA?H
za!HMk0wH#O!DFXFK;ls=DITy@3mMR?TENtuYa#)$fsujbLIyXI`?eujz2ZQUJZ~G=
zf&gGxn%p{s<X&BB`IbpELT2$nh@ZGXeu_rc)M^TrFhck2EmaxpZo%nD6bT%meIcU}
zhkYns^wvPqfg|)Tya@e@!ynN&LPaOQ2CRs+Sq_g=*cdDrS=LMPcuxl=Uj|QCKbLh*
G2~7Z!QPtW2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..edeff164f6e1e0051b42386b2a9436518643ff9e
GIT binary patch
literal 35671
zc$_p_bx<4c(+?0JI0SchcZ$0dDehX_-QBG?#apzvgyQZ}q`12jcXwXC@67M!xm<E{
zf9&nE`;nPVw6c;63L*g_002Odla*8j0H8!azORDdK0cu&yl6fyKv!`&b<oG*2QrKL
z_>JHstK<6d{K9`HlsH|s*T+qKHz{p5HAf3KPZJk&fTyP?i?xHTtEq{TIg6u<W%ijM
z0RTV-kdqWs_sTixuuL@5@gTYT@vN{sa@ASx|K&^eA-g~wr$8Oaq;dWnVmHe-Q7gP|
zQFK`hbO0O-Mrs%+=}8QhPBl+fQW*dW0+@<HkFLRLX?F=|bJ`Am@!gm+Sl6=n<$Xu;
z>Sb+c(V1Rd-ey~T73(eZ{r-pTZ-$NZp*7d&%qc0{bF22Zq6n`5P!VeIk3-fsGM=ZD
zcdk1D0P6F=Y?4VSB_$wfL6mz(xjU8s-_sTU@0DF>068cX;c#)p3m^+prb3(&K{huo
zYEY`m!>0~gyLU#=gR3Om*CVW%^R6%>0P*5S$_9H}V9CzpH#XO^w0c3jUjOh(2H>%~
zgH%yr1c8$vAR77Sl*C>@&Ts>))XP=Zw>Q3^d{r$~4J$P@bfG^uv`FN#fD`TDf-2+%
z)ghXlq;fIhY&dEk(X917@euTG9ISwfE&l=zgk&73BtYGXlfgae7)#EtmC52SL9GPF
zxW1_Ae-D&X`;5JbSV-Y7fuhkd00h}3G%;khVC`_KozrZJr;WGsvVC0MvN1QTsr(zs
zo@xZh4T*BvdZ^9|K5}Al@C}`8EWig#JR#(3bW9@%0OY%F+O*&qsnHYvp>Mfca)T<G
z$p=#X>?5xj>G272HifnoB8`RNRx?bmKisR+4r9H0UW2o^jdyfmmJVoJgvt0sBqbbx
z)j!nZhMX4)NM*o}fD49V8|v8&@<NjIzrgzTORJh;=Kb}2P=vp((&`rr1y1O})TTq#
z>;(R29PHDCFzA?jQ7TpROA=)+xaYsv!+wo_@W%HLtn8!%$^uH^<L8h(%OB=KB#gN1
z9VA1HBii`UEbVI*U2LU_T{-cP(N#VI@dEJOTR~%ZW3h+;H}ODf#!)_E@z7i#ClOH|
zJVx|k@hdElGx~T?(({?r?U={|Z|y$IhQ^3#lo|Ll1GJ^Ruont5y73yZBD_94(?5S|
z5sDCx6D~TiW6PHzE9tNwiDUrZJO16f`B%ywoS_4-G44G)Z@i4L<OU3RF6@+v(*b1;
z@ETn-)Hn^j9(2JViikHuMgnDu6SCLcy|AI4`}QM{)OY*#7&~0$@H9L*rdOvE^M#0u
z3T+vxg*(MM_XQw&NE*WLU3Ba12@?k@#ss?&YxDjMB`%3;(Mwv\fMadUQbemlWP
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
CE>h$G
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2fd3688fbc65e4fbeba242ba9700f6b9f7ffcc8c
GIT binary patch
literal 6243
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
N002ovPDHLkV1n%X#1Q}h
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..168d162f5ce58b07a1f0310ebbb92bae7d389692
GIT binary patch
literal 928
zc$@*C17G}!P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H1106|3K~y-6ZIjDSTvY&vzjMyLmzmBmkIpzyT9`lup<@$TW15hv
z^|4TPR@=nK!iA58yC&70v44Oo6CVrQxN$)n7bYkhDUu*fBPyYksT3%$p`96qnYr`2
zkK?AT3Gui7@~ys~&|33<vwF|A3(Fdj!QivLZC}@}d$YAVQ$NUwgMzlFUK&u*@FcpC
z*1m&Eb>nWWAOaCBL}1>{7hY?vOy7URO8^!#CX1Po*WW$+jS3mJ{n~@HZ<kP=N0E_s
z%%0<DyCD3^_GvSf*lv6J)p!0AEM_vmmv^?+<;iUHBaJI$B#!FpK?H($`7N+awC7-U
z4<Oo1r4A>*xB6d90~o+X*CY1Fz0l~1p(x9H$3XaK-$8pV)X{Eq)4^F=#^2w=>OG0?
zRE0bg{tJj1fVs3`q@+^T<yW?tU1+j!*W=!vK`q{cP(kv)PokT3+}t|J-X6LJj}fLG
zJ%8c!%LcHpSx|3Q8iGW`=iD<E!$S&3OOQo=o|xy_#wq~8puy+wnFv3Jc3r0D<R=C&
zmoLjiJnWFK1Q2)}NjL~0X!?>^SYTO-X47MMIEh5#YYp1RP~wavvv~K$ZJ8^S1?|#C
zdM!4K7E?FtT>5mLvG1}pn;uFD=H_;3KG<O}RiiJ_pd;#Pp|vJ)V&uxD3+`vhxFQyj
zC_}PWGikXVQ&U@vUtJ*-GWqcR48Klo(AN`U==dQfrYnC-fJ$BdFg78vs~)9&54-B{
zWHe8Iti%haEQA2tcKG_+1)2?)nc4en?ldUX0#_tJYjtL6d)K@1#kinQ@@Uk3vfFL!
z6eUtho=8{#G#VaD%lkZkCPvkb6stA)<KvWtVU4Ir=S(CS7Z;yvQ7PHjHIKE88n?1#
z9LMKKD!>PCcM%M=>#=LK!8^CISpg(~ao`+)FaxM)7s)^cOVsJ>ZsTywBos6_bu!AI
z|0w5|-x}w0Ys)`9Dp3PN57W+Rr}1$p6n>+uqi=ayihu+CogT%q)?Zz9X3P8a(cSgz
z{^K`3l#Buu;JVh@2k1x-0CWIpAO~#iu4lc2cm5aB?PD*NuiCf(0000<MNUMnLSTX)
CC$V<`
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..327a662f196a293449b0851869ed7699a4ce9ded
GIT binary patch
literal 43113
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
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f5079c58c35136c16e717389f0efb550e14db991
GIT binary patch
literal 12292
zc%1E-&ubGw6vy8r5hIOhHI>#1cJZKsWH&9I7K9KZHb_wj?M-O*N0K$kPT1X~;wj+8
zn;=xw|3Q28TI_$|Q9XL_Z}6aRcV^RV+FArru<t`A-<h2^vv1xkGua6Mu*$$%0+<JY
zEC`*Mf<wv5bbyr9upPtpz>TmQER+xLi697qAc%hs6Ouh*-zNy-1QV_giqx{ykx(Y<
zQ&KaDHZxKcsb#4np-kGPq-LaMrOrrIq?V<Qgvv#W$(Ii%@66;I3Y(FtNG<=?kO|^M
zA>Q4UT9=zfci;Q_s~-`O6$7<$?`~CE<Q|wo1t9GLd`gSj+U@oG2IpNSip@=@H14j$
zZ1y6ZaZGn8ZyH(nn_cd<u=F*)GHm;8?qT7YxZ;>CE_;d3A2M;xFs@m^{7o3S+_eoJ
z^u_~=mzB^q5dA_<T<JSzAX<k*h`w<(nX0*d&~O98@vO-x?QUQ1t=xc9m@VXuhS_O(
zeBfGYKN`SqGrPMz_a-igAfHW5*i5N=_X(qz4ZX;%V$HcI|L*$}h?ma-`hPXyzMg2S
zPq>?h%a{ykfC(LFfd?E0;DQAz^if+d4fFU|)G+TufOal^8{nX&1?S<CmgroYj70%v
zwRPSd^lV>C#&cE-FBN@qs}0j}1Mat#mFmQ>cX;U|MjBx2{o_SvuZLnuT~e1-+byou
z)n3C?t={pWe`(wbXU?*Ro@MzR5$Q9^gjL3J{6Iu_hhO<Hj<AR}!)Tx{u=VyiJZrXK
z?#pL5{p~3LzldYmNDf6`^KH-9n_ccX4Oee*$8CDHZVa5R<qut*8;^>KA?e|L_2b5v
z#|>~1qkq_J6rqH(wuEUJlZ|ynSc5v|d(r%=Xw!>kbOE3J)##cN^}w;WHg2&iP{lc|
zM~-XKaZNg|#g1zej%%Ug+Od;U0Hy(4z$oRzxXYzv`iLh>#d06|`xhd3i0O4=A)@`C
zApQ_(A@kvHfICN@{}Tl9AHy=$dbI-M1Hl7?d#!?LBW?h{J_ulmKMd(0fFKBhAP9mW
N2!bF8f*}4rKLKU(9k~Di
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d0d6164f2d9c25427a9c5ff6db6839607268d7fa
GIT binary patch
literal 2316
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3603b3b4063856d0e09b1312ec91561de78f65d3
GIT binary patch
literal 900
zc$@)*1AF|5P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10|7}yK~y-6ZIerATxA%BpZ`B+PUdoErjwx=+nC0&F(rv$F(gV2
z+KLsewB9SI-KgL~M1tB)_XWj8U71Z6Qd$&r8=+v;CSIb!Q6^~<LK0h(nA=PynajzX
z%m2F&M@;*zA0A%#-dAX?x!qaWfw-`&LoyQSQ`PEs+V{uZ`B7&lCw2;&4m{dvB<;)S
z?RKp^jFvY1#aTo+p@j(N{Pn_<?(Egoe|ZVOWKW36o<q;RIxu9!%qdk{Ygg40#vQH5
zM4ZsR{pe~zsPfYNp_cSg)4fl;@?V09?jGRnnI$80@J!n?%6AaqFd`a7CR3==8Zwzi
z7)`M4p~{;mWoiGf#jHE?%?%Sc=?Cok^=9l?cUO|>jXOaowDQn_i_zK!z6M`G$V9si
z%Bu(&wSNb82|dw$HvfnD;M7|Dh&Bv<%-6}!1>D>)sipQI;wgdvbfCf4Buo!m*0FI&
zZ{K*#1o8_7<Aw6JAe~Sg?zK4BW#DOvQ(UC<+cb7pg!o<?v<3~zQ)u7k>X<xj0%Pl2
zGM%zL*2`f80ejLOfBsUT**(CEZ$8D?l@WgWd=xtx!}9~8`wfzJhcONDfJx8f+|Qr%
zFW=WGniG*KHBYiojIlZu;{6X#0kFGe505;2lq1hSj#ip4hb~~$Cdni%EdefFF~3+T
z1Z-4IB4LwM*aNK^-N^rt<M4Aw|9P7f9DnU4X1<5H#b8_llpXom`L86^N<e8dpjz?R
zdryT+AD^eVQlPk6z<0fd&~@r~QZX^(ooh5P+}<~qPRahao>n9yn(LQ~^mTU-Z28oE
zk9xg{Q>S0Yb3HD6G{l%+DveC|>4w0{4p>6f9XqPz$<`9@zHx#~CJDgsaE|F~3&e~N
zT4|P@Ew0UNoEe^9K5I5&&5yeFU46|?jbe4vl4#A!a*14S9?LQqeDC=GHgoaf$UDbc
zlHcAkCV>8IcH9?cuhN3v-Ei)Mmv3RT)(j4Q`t@xE0GakqfXqW;bF`x)6G-rOGPAQQ
a<-Y+;dS;%JBTR+>0000<MNUMnLSTZ-qN%F@
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..69e9c93cbaa4b355112c9513bce91f57b12c40ae
GIT binary patch
literal 4131
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..efbdf33ec75157271041d37b6748f5974b3eb0b7
GIT binary patch
literal 1898
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9b4448002972c13f6a40f3be0beb5294a25694ff
GIT binary patch
literal 829
zc$@(}1H$}?P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10=h{=K~y-6b(2eIlvfmhzkC0G9*L8gj6=<|F_~&<+9VaNB_W8l
zt#wh0R4vj6(L%RAHZHm;=uX^7H-)-!W5Je^l@x?REscR<uvUqoNhFDhCROv&jPv;a
z|K5ALF)Ah=I4?NoJ7;l@5)oFC_`0oiDjwgWYic@Nsr089b0r+_t2|$)o(Ck}*xur0
zQokY9g1888O%rBn6qQViQptbJ?A*?9wD<l}y#`>gJ;q@Bmc9G8p7vJxL#{kiaHR)$
z`9^fQj#%?+NNG;F;`HX&n%s2at&h5&Zg8Wm9XN7x+H2VKZPOlSDyU=<Ra=YBWN{B>
z(3u>{OF%Wk6(8bUT+Dw{>%yCVO!&ZO#!`QEa@EIetr><F)`D_~ix3;)H8z0}Fb-lq
z5>{~0Bc*Fo*MWK^H`-1N-157IX6il=&*QIwfPpc~<bqE*+l;EqVl9XjFhbgoNa=tS
z6>`;y9X>E{XU^MKtSWM8$NTTZ+0^P0i3U9nY955gDj?t@hZsZeW&Mp0T%KLjxoj$8
zwwOd=xqg0;4P9>oASm1tV97l;iOH)weA)-c`hV!WyRk*BPS=zuN1E2n8~FO@!4>c0
zS+U{w_yFfF`aSuaIcBpy^=VDu3=)(%`_qLNHh=ZyPHbpGAD~##KcBgvj~)KRf(T+l
zBq(v<(`_#VNKissyXXUi<9+`o3myHZdUWTZ-Ih#ba6y?LdoC_(Jg{&3li0&n{H4U{
z#JjT#LFLphP9Og;LaJr<@9J7Uxmtdjn20BUaJ(-}z1p$5Qf7W+_@3_Xy@FE9S6|zl
zry-x^+TSB)a_mlQ*)sv;Uw-|3sA9XUX!XiV(9vRf_y`#u4X<_9%B9c0c(421+24O1
z8M=LPMF2oUp#`7;C;)eXse2P67NGmh#@#_RTHkZ){&)WaP@F*?8)E6#00000NkvXX
Hu0mjfecOXN
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5e5a25f67f474e4e51d1f73eaabaf4ed79c1b3c5
GIT binary patch
literal 3267
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
BK=l9s
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..da20d5966ccc218dfdccdcd80427bfd7493c7d0d
GIT binary patch
literal 2376
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..168d162f5ce58b07a1f0310ebbb92bae7d389692
GIT binary patch
literal 928
zc$@*C17G}!P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H1106|3K~y-6ZIjDSTvY&vzjMyLmzmBmkIpzyT9`lup<@$TW15hv
z^|4TPR@=nK!iA58yC&70v44Oo6CVrQxN$)n7bYkhDUu*fBPyYksT3%$p`96qnYr`2
zkK?AT3Gui7@~ys~&|33<vwF|A3(Fdj!QivLZC}@}d$YAVQ$NUwgMzlFUK&u*@FcpC
z*1m&Eb>nWWAOaCBL}1>{7hY?vOy7URO8^!#CX1Po*WW$+jS3mJ{n~@HZ<kP=N0E_s
z%%0<DyCD3^_GvSf*lv6J)p!0AEM_vmmv^?+<;iUHBaJI$B#!FpK?H($`7N+awC7-U
z4<Oo1r4A>*xB6d90~o+X*CY1Fz0l~1p(x9H$3XaK-$8pV)X{Eq)4^F=#^2w=>OG0?
zRE0bg{tJj1fVs3`q@+^T<yW?tU1+j!*W=!vK`q{cP(kv)PokT3+}t|J-X6LJj}fLG
zJ%8c!%LcHpSx|3Q8iGW`=iD<E!$S&3OOQo=o|xy_#wq~8puy+wnFv3Jc3r0D<R=C&
zmoLjiJnWFK1Q2)}NjL~0X!?>^SYTO-X47MMIEh5#YYp1RP~wavvv~K$ZJ8^S1?|#C
zdM!4K7E?FtT>5mLvG1}pn;uFD=H_;3KG<O}RiiJ_pd;#Pp|vJ)V&uxD3+`vhxFQyj
zC_}PWGikXVQ&U@vUtJ*-GWqcR48Klo(AN`U==dQfrYnC-fJ$BdFg78vs~)9&54-B{
zWHe8Iti%haEQA2tcKG_+1)2?)nc4en?ldUX0#_tJYjtL6d)K@1#kinQ@@Uk3vfFL!
z6eUtho=8{#G#VaD%lkZkCPvkb6stA)<KvWtVU4Ir=S(CS7Z;yvQ7PHjHIKE88n?1#
z9LMKKD!>PCcM%M=>#=LK!8^CISpg(~ao`+)FaxM)7s)^cOVsJ>ZsTywBos6_bu!AI
z|0w5|-x}w0Ys)`9Dp3PN57W+Rr}1$p6n>+uqi=ayihu+CogT%q)?Zz9X3P8a(cSgz
z{^K`3l#Buu;JVh@2k1x-0CWIpAO~#iu4lc2cm5aB?PD*NuiCf(0000<MNUMnLSTX)
CC$V<`
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c45de92ee22cb66bf2922ad36f93ff5ad503859e
GIT binary patch
literal 4185
zc$@)Q5T@^mP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm0006v0006v0rv((!T<mO8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H157tRUK~!jg)tP&6TvvU^Kj++g_bq9)T1%E>S(Y6?<-~DfCoxV+
zYG@(h;Q$>%GB7Pr9xaby%Cys&w4F{{S_<vZOr{iuM;{Z~!cda{2}u*ML*f!Av7I=P
zEy<Q`*_P$i>a|*FU-#bg>mPSlZ#kI&ef(zb+;ex&J?HoRz0U9VyGlg(|4jBTYhk6{
zYteb7*%4_IO`XQSQnAftIsNR^FLa+@lm^r_dz&3ky#q_XTg4(bDceqIC!`5ED6J6J
zLn<D)<&tr|VJVh>D54+s)>}`>!Gqra3IL^)3U%Ik4-xw_I+56=>+6&myNLKMXbWXK
z=y*Lk-hiLWVshh%2s#wOZodYTo5AF#X8f6%0~-FKH1Kr){}=#g-QImV9KPRfY2I!%
zHh|Xn*-LoiS7ztvcs*9rYIM9F0Po5m{&*GutFajsilC$Qpfui<tnqW>Uv-uIshl}H
z@=F7tHveim?E4SuRjb}&r;-@AgrB{Hu211-hY*7Gl-4*KuS40+?7QN+xC5^szDF=k
zP};)j>_*uRQYzyOXUhJ})bCf$9)92#3!tZ4Z}?#B`b*Qv?}yfQw5xCke=>tVQe|4z
zRt#=dx)r;nBY3XuA;GxP{}ST4vmkUhj`%(pAE#pr{?s(ymEi~7*yM-hl~*dS4?s_M
zD@wK?dK)6`2T$1T@BCcqZdbcur4=e1L;MP+Fuj0zr4)A8R&*>e_j`?b0stmAfp=*D
z5t#*5o1^0m*sUAzr)MyiFTGe6?=4p|sigpVy1Rh4A#y89X_QjOPiy;*FSPBSoS0PN
zdvlUjYTh^)>O=!h*XHVT4S~!95HRdrJPTSQ#TisMhMAfG-v=j*ooa(v15&Es4qdq5
zYInQzK9gS#z}z{|(_IIA2*n;m)uWh1(J+)%<9GjE%iD9)WhI`sfZ18*Yr}99XYGan
zm;#I!NZB`_HMkX2C{_hxP<9x*Ya1AlrZzyKl!bU6pb*EwYH44qhXx;2O1)7;%<=$w
zx^3WN2s?mgkUmh`@<loO<sZfGy5y%KrZ|Aon%WvVUI*Gjig{EdhKj|(7_jYG=H0>5
zNU0e74yZ^RdrcS04r9s%%FjJXX!8w(x9kd>*z+*?F|b0YaA1Ne6vm`mZw<?yF9RQ6
zNdxZ(HltJrNH3^5pz_4A@a+?-DGA_oZbye5%=Bacps}ecX$hpO6zHl-6kt0z>o+5%
zB7Qc5u4_Qor-I#TaulJ`dlY~4GO;~xM_D#rZVV~pu{*Z|RscK}$26?^Sa|)O$I54a
z_RxF)nx5{Rz)grGL2@W%P{c<jRXkgatlPGxOjA0F3WY#vbbSil&@|6(^kSjRk!7Lc
z3GB`d=w#EJ&%mr!0Q}KmDra5{B)V!1C<}M62Y+m6Zkt3Bbm#%4<}VV+Y-e@s0F|m_
zW=3-QI^~23+lG5~jiQ7(N1RVG-#fuf=MdLr)^QiVR~@?-PA^!d+<zQ1lS4&f=wup<
z!Q`@d7kiLO0hB@#jccNvH+^<7fc5~QDgtqU6X&dS!E@q?s6l{@=_2>;9wBP`bJFvJ
zu_;XBPiB!y8GmFL_go)t?~AzS`Z1FeU?c!pjXvVJR8GEtnH*gx2;ZZ0^v8(jVI^Cz
z(rd7q+QA7Ug{dGIM56dk_`c}&9g*5=HW02#GLO=oh^XF6_I4GGvUPQl6GJg7zQwMN
zJR8y_p6pF<<Vc26p^Q!>F_j`xDWNPIF+L~|5v*`5NFnCMfA?%J<>QADx4euh!Jo`h
zc;<UVZ}>HIvKjFO;%UV7FjY-UxGt%tiys2MT+=|IssRrr`HH97CyP$o__RefZ*y&1
zk&tCTpfOtEJsSu3v){<`{$Fv~+mWTSp@3r%qz4E((SY65iq+g6*t`fBK?*aNd=6`M
z$Fj`NnnbLQ!m~fbOpH)FqeN+<j-j=o!j^T4-JALFd<~of)>LO+&KK1im8F#+oF5Al
zc1m2^HbZYVMxiL^c#>Gu=cag(n^73IjG)L&DlSbY7`9iDuh<m50tHu7^ehS$O^FzO
zdNq|(N3RNC+x8Z^Z`@77F4GvjLS5J;8S!wm4`RR=yrNup{Y~pqFFtpEyawR5s-BC(
zW4f-bNw_o_%<sDrWnH?=_3Z_QryMR!MDVqRc0vGH#vtVa?VT~&EepslJm`Q|PK;3~
zxctjQr>@Gp6Vhx<POxud9b%YGHN?n*U|>7iUe}iVFz`hUyhJVf0DVJtY)#6=(I#*@
z5zdc>IXN7mG3s$c$294LH)q?HM#U1Ktwrg=+;!~e2w(fkE0oLrRRP4~4sU&HXEm@@
znV0G!3+{?^BX0rFboUg2=WC0MPwViN35)Lb5|*CJVa8`{j$MdzaXiHORDm1UOw(3h
z!Ct^MED4)HD5OzJkw`eKMCo*tWJ7p1Vl7C~MCPvQ;_;YnZRy;kYp2j5fO17SMz97)
zZA64EtBWXPPL%?~xe!M$Bp55$tZOW>Yi*wOsS=5hzhHwJkZh*Nu@^@8#HX%f>$cR2
z0PeYG6ZhS>tGdKI>Cb0;HggpmOOik+0MOkt1e}^Is2Bt`*EbZRK5E#osx)g#HPw1X
zac;!o*rf#7X@{nm%Z|1gc6a32&{QN9t)QzX-@w2m_x;Ik>gpWMoSs|}z<0lU2G=!!
z%t?P1%pwqg6Vh=YGQTTvpyIN(rm~U?XRg?6X?H1mii;DGAjVh9AU;wqP;g@mxCzcG
zsEhbC#a&V{kJWW9Mv4?F7WFqr_}2qx`TmbCFEooqG(0@Re?ESJJMQSLvLIAFnOXJM
zo<&eW<`A6&(A_gs`SG=f5V<>;q{!wpwzk=@x<a{FVPrxO;{_RYI2NSFA_$79lEvs0
z<nu6|nIfCXbE<cO=Z@ttuc7FxuMhFaqvzRmV>9V=BslHoOMihDghI)b0kxnn)EITY
zRV;`8AsR7NRcVGNY+PU1)LJ5JTU;EmzzIPpR@G?0omVk@@r%befByBgeWs>@K=|mx
zC;9t7--PFbXTbBo^99cb-xFLf7!MAM3sja=WN+Pn%gnoO^J23pveKY54GF`xc9&eq
zqCXSGGYVBLTvWCC@;t-ALzg&nI!DjRaVnLohfRRB9Wk<_Ws1eQxu5=EJ0E>t3u=Bi
zTHpi16EEn?fBE&o<|P2aU3<@b<Za%DYrFhe=4(LWG1$JQj1fhDCPJ=cqvn;B^Q*{8
z#n9I`$*JCPvLi)aI<Y8utJ0oZR`agA*7Mk7gZ%WFVLUHLv)^!YGaq<g7ZDpQWw5ou
z(gs@#widqkQ+eUhL&d#I07ScP`DQ3$eee(Ou8^veMIaQBkYZC?g@%|Rn|C-j8m8<A
z!E8aQK5r-@eBzT&;rmOSVcXUepZ>&l04BzZJo4BDes*L8-xoG?)p758I%!`W4ICK3
z_=a;AX88KIGe;)IrVcCtP}j9<e~IuzU9Iq$yUJJ=3$zf}i=w5`(6!1%Yq&5T;__q&
zBWeNT^8wxW$3J6qw6p|3IBfCuJJxdhZLK(Vko-+dmU!aFmwD#M2(D|maYu@6o9Z~(
zKgG$uDGEg&rPP#&d~ykZmd;JFNu3@xQ2(Z#hIhTetun1aS1bCeHf$TZnmt;QKAs1e
zal>#vM#;CqD<Qr?g(66KhWo#An%*<h%bF2DLqmw2*QV&+nq*CDlyC^f$IE>F{!@5W
z&1tRZ-dsnbAvxAJ$lkHbgMG{Pg<|V&{=SQP2TJqqTRrye@aHi;XHGSvuMd^k&|D%O
z4c?!awiq5WOyrpjp%4DYWez_-u_A!0QAc}}+xMioZd*NxxWfbgUitRunEQduV86R;
zdp)EIU-Be=rx@Ql@Qj6H!EM|9Y6S2>=7GR4Re<BCp*01qX=qING$w*jK2?CpX+`_$
z@atk8;FcRw?A_f6z|md`qhszvnZbS+s(pmT6gK6j9pyg`0><Y%hcrh{>3Juina#}+
zK-&<CGdvaM*trNVo)(5j1!II{Letgm@O!_xijLOT2cmOLP(kKqG*28ZJ_S5k`)^qQ
znZbT9>gWH)Qo4-zi1>W#Cz_*Y^g;k)K>US3l+CoCU?3akx&9C@UyN{m#KKcHpZ={@
zEK4o7<%)DoSDb6s#R2%iGvo>-^R3Ka|7=WN@e7Tm%%KpKe=Moc$Hll95&rpc%|ssF
zywjgOP^#VA;9h&Ih9aXJPMn(I=t~nEJu$)9`0};za%9_zJKvb(-u=xa62h}5ZF&c0
z9?|fF`SY&Yoo?yew56aLzFro!w^p!&V&_J9|305^Xm*+EEx2d0C7wGz!Slz*$&Qs-
z-<jb0?G2nAoZ<M(D`%tt%}oyb-`vQ1?`WiLRZu^aJjG|f<h^q8toNzRVE>`l3;-bA
zwr+pk4}Hz|{Z%N9iqwHptWLp4@APR-2J^-zU5>sy$@9l2xG+?teRY)GI~&=3eIpaO
z3jcQC5<^#tSKaH{t#y3#-nBSRVA+lh(U9Wdr~S;qBb7e_zL6R1U%>E+0F+WU0Dl17
zMXmJ$sAv)^)ddKSnP$_f93z=L!<iE4REXWzC)sjM9l0r&fx!ZOXYyRhzPjn`xv`NC
zyr&(l=X^wz<_Awp?u8S@zXkp}GuXf6TfqVVN~t(-2k<+<zLhppb~yMBCI&2rbW4)`
z`x@A}HNwIF8sm{CGnC3p8p$ito%@=3=dZUc_^s$#9QcVl+BZ=7Ch)n;VE?jdt`ZTH
zQcb|;37Wi-<t8pB9cx0xQq?Z9Lb(N;>GKq37N!e{xJ}pEDC;|7bauoDhcw0rmZgY<
zHSwrLL;bv3St*9cExz-3X<%&J`v&kpX0U(7BYai^N+}II4!rrb0En)=amE!pj&YGv
z4uAYy0L*q+-5lk%U2(Q;jMI{St+8KG@id1|h#Wp%I#el}Zvx-09at;T{4kngNk3u5
z&Bp5__g57a*<Z9{xA?Ip+m0q@bN3P8(U)Op#&E+%VRMJUTCs_(@I>=mk8t={@nnA5
z90dLeIJ($jUkyN>pvm=Wln423lzJpY`B+HGx4AlWyQjiCTw^!-C=f%jB0Sp*&z^#K
z#A3&W0L-Q}g4PPxSDYP!(}RAcf3Vm$nKRD=-vOS=4E8TgTUUZ#^#KR?0`L)F3TRz4
zuS{@!9{?T}k+IqzEuEX9z;(bLV3Uu%%~wvRL8Sy8HE746urMf$sgIg+d)lAAJnWsT
zxaKU-2OI=m$PD(+yjI2+14t8`Mianez?%rZqdW#Y2s|PpS1op1IyV6%f%Vm^184+d
z1RVr`5-<i_tTKKU$h{U*xhjC!2c=@b?*dK0S4HIf>s`1CNE3V~vH&0Oeja9*qa_EK
jQpysMSFgtZkI;Vuh7ZMb(to~X00000NkvXXu0mjf8jAa4
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cb43a814ed7a903003658926fc78b6c7f8167534
GIT binary patch
literal 50934
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
LzscWZD&_wGM^Fn0
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7803876313ad8e15ffa9a1715d186206e5abc333
GIT binary patch
literal 25214
zc%1Eg30PD|*7gB<V^b6mLH2#?h2EP6x>;pWkj({DR#Ax>6kKt^eTy15z&&x_qDDb5
zn&>1ZnPf(@7{4*!M8}yV-xxEQNhX=ZnK+*R)V<x%AS5O;-~Y_>{C_3Kx_#^1s<%#^
zI#uV?y#UyOBPbMZlnY>r2%s4N0t5Nq_v`^4(LFae{&%Du!2dV`@dN#qz|jE!1DqMZ
z<+lXjyf@?Le@_ttOboX22g1=XfHxwn{PdgnW{kA*2f`Eqz>tXmk%WOBfpP$@U6z{o
ztdG>h{SQq|e8&D`x9FcMSFX?<<o*XlK4br}TkM~HlenMzb=Cs$+_|>5EhMf>F`FwU
z*Y&DKED!{ysC24=I<QS*fxSSis;}4SG<CN8W+GL+PF1f`X}jyER8A#!?)9qrxjMHV
z4d|G(z|KLX)7jKyR)C8C>2<DNVQp0)66;jpP|rO<ZCh?P*ryVddN)q+;9zVVWvQoJ
zr!!JPJ<n#R;vWzQs1|~LuD*jW@Z#^+mFrZE^?GAt#~J><Lp=w9@2F9CZoUPG1BY2G
zQq?!=jE%eI>#P7(Ot1n6;?{R`)YmWPE1~8c*i}`%UU%+7ePg|jzwIW7<IwALs*aAi
z#`?xaR;$j<o)A;RRjS6h=jx4fb)3McjR;i-lZls3Wo&GmtBbQV>d?_~u9FZDl;!j5
z>t|YpB_S?WPknvkR-LY+!-|rLims`+e)Tyjq@1g!vA(|LTpc)5r&M!0E;i2PpAZu+
zhG&hg!#MXGT~nn>2B<?vNdcYbI*5baw#d1jW09<98OPJ1;_i2_t2*ZgEGIYwsDneK
z(~}%Q(%E5bB!+s;oH-d8?EY|80Fw2~8(XMX9`=Ip>QJtt>hjq-Sihbc=unG9f>6=u
za&}uJ8j@nBdOCIbhMLjkH6l@H4J)WgF;|l`I@d3+FE1~z$rxT;Q&B_g$%4>wcE7Wu
zZBk7}hB`bWtR}+@8KI$EJL|t+UyzbADYPadJSC$%5GILIGMIML1L{zLNF=JROMx0Q
zD>ZX!vVQ$)L0~ADXJu5^j25Y@t1Bk+0$<Z<Z#I{QifU3CD$V5(Rvl;^p{3>Jq4pUm
z4K*3mjg%DVO4SV_52&sY1)4?n88$OdETS%ms;jB5!@)L*MJXxCl@;aX)e+FMAOp(N
zLIu5VGrbdqmRHn0cKZnvatYvjOa3K38p!f10e4{u<#)wR5WsS>!(x`xGY+hray!Z&
zuu7JYjke_2M7fDKcMxE?Kd?K0$aSVW=bm@ym6MJC@(J_1z49x)@+RBd;qe?SIGSwp
zf!+BPOF!;fa;{yI1;4ew%$9%2%L5<qazg6xK+eWDfr-n%w6oZJw9VN%69~M)wXQQ@
z-`{98{TtVr$5e)TUuQOlg>@I#nL}v>=w=j<$y8bFHD~r!oW-v<^EU(`W=$Y7s}}nl
zQm+eiXIxwr0(;(IQQ}sD@>Htn+<I;tn6YDK*x1NhL$W|(2QpwCEjsR(Lmdd11!|#X
zgPwMvHPF7kk=bAcD`wS-$;?_TlryvZ%NyC^z&FS29xVv<WUQDGuU}60JI>7|>&0xi
zm<kk<^_+d=Oc~>MUf$S94RW?nPZmznp=;N@SU;I84rpnKV`gin*(_ovPEgJ4Rfn#o
zCbWDq*{E`ni2Y6r6=l?v*MKNP#LAbGsnMonh@d*Ofm-=~y}1H1CWTHGrP4i0>zA3!
z1IbpH%QGzE&JdWxGsv=}S_h~y#avgO(rrk@=JIOMXxo9DJKT0pV3U}({gLR(mkxNv
z3`p8yx=R{O>N=2gS<KXyRM>$L-M1qGOKx|?hMH`Mja(B?Vn$Rxke+Ae!bEDn1n-i{
zKOD$uI@5Eu{*iuk@2C2P3jZEG7Yjm0^J+R+#YQ!?p3|#xw%CzAdFg18baNBa+NK~~
z6YJPQtkcmd+@YW~RKhKa^>b;MtI8oFaQ)m2K@FstC2cgEA~NyfKvA_IkROCOwsNM0
zg4qvh_%7L(D|S3JK~LhO$L>2Y8%uU?ApdO7eW!%4)X}C}mgiV<65D~jSONlP7jSZR
zhCxnt;5FC*M1$Qy;!ZTg8^l9>!FiZ33?4ifJiOh(&Bq(Oy}cpC-2p;;1t9kkK*&%>
zP!1D-K0p9Ue<x6ei9jDH233>@46!1J3mO21P!~|eI75O|0*ML<sDlSVe7HN^^8sUw
zFSrB*gG*2-xJJf;drT}0lEuM5r49xt4KPHb26wd{JPnE9lav5zSun&UhJisJ3fWR2
zWNIB@j8Ouqv4bH??EwWwZx|jgg`$KYC`yb3b&3?^X$hcARzt4Y2}&}Yp)B78^3(lb
z;;3OzmE{amid~>G*Apg>b%(6sF)%JA9LjT)P*Z4t3DfjYSrrCeiK*aYN(SH56!1vN
zfuU*H;GLNZUL%UZJEsu*ipGO9Jp+Pr^T3#s4vM@yh|kRdd44KrM`b`_;YbL~D}a!~
zLXZ`Y23hF@FccSpYFrVhCzgQc=xXpAQvm@b<q%R@2|nf1A$C$Fgj78Rvf62&tg3{>
zs!5=$sRd1KEg0*nKrwR$1WlR=!Bgr%URwu|Gv-0;%-IlHw+NzVHG+KM5=f|@3yOw?
zV3@lIR14-o;({fRnwkpfgfVMG24rVv!-)JGC>)go6N++R%$PASp|lt(3({a}Q8LUb
z8vzAV(_w5wHWbVr3k?+`VMcjAR9BV3%!)!7SzZpMQ>!3nehrLSyaXmqngmbRPJ)@!
zYhYge446rq(Zvhqz`S|$U};?$ESpscE9O59>l>%Rvc>ZuYk32#TDBMh=B<OU`X-2)
z-2^f7mP5q+H4wXKEyOKe2`LMgf_&LV&@5d6@vB!t{F>FESiS)atJi{Y<9di)wH>5u
znjv=G4p6Oc2K~lnP;b})iCddNvv~&?x9x<a9eW^h(*X$Id<3MM4?*<yV<6vg5|rBy
zf^OGgFz!AGik73G+<gKJdrm;it`{ME-%Fs_dlr(OKLonxPC??q6Ci)C4Pu_Z0P6j1
zU^sjh5{|cl^6*QbIsP&jPQC<&GcQBh+GS9%bR}eLUJI!kc0%%&EnseLh2&j3pnC0k
zFz?$B!w;N;=%cSf^oh4X`NC@ud*&Lb&b$e#wqJv`^E$+|eE`b#_ds>w1|)R;7u3Fa
z8y38N6Ed#<8A{&$0><A)X!zhyP;=)Y%)a#{%>UiDF!e6NtUn+u{P+>9UAYuCtzQkB
zH>`!FpCWAhBf_)y@JIZ{A4q$C8avsk<-KnG<KX`NfA5=nmtY{5cRjLul|CeJ2qpR0
zm95`D{y>ZMf?Ew%g$(iZpfoIDc3XSf>~Sl0_5sI|Twv8u51x5iTRSECr>$by?*8~8
z$isvA_X7$KbL@O-D__$Cj*WLObo1~S%>8x<A64H_-*EUCYlL*T&lZ?HcAe5zWLq|h
zYoer=uvT-mdkl7ua0KzFh8k(NmmkeK(N@{J*CB3h9)p7yw6`xPastP~qYYh)K{)Hn
zl^H$R*D|prT6%djUkqV|k=8Qtq_;o&?9;8b?9Vaws`ieK_Vx?y7ijI9GqOkAVbtY!
z7Vfb5J=DX~vzAqTfl?<u_Qrdk9I|~Nti63~_pfI?JUwbT=FZN}_KsKH{p_>PK6dH>
zxS{=cmm;w0tJ^u|j`p^<J|^xzywgLf0EO-CPg}3Icz9NIv=e(rXXk6g{f8^(+uEXg
z@`n{4Z`)<L)_9KZ=wP*XUb^}D{dX^2y4ZfHJ={|0F!HGr?c7QpG1_v=Gma#}*stBc
z|Nf=hmoDADed)GEK4qPkI!{RLA+k8q!Lpy(7j%l_zx2uHpAf4h@$3<oE}f7PnuR30
zj)o@gUi@sX_Sf&<f8D}+X<DAe!HYac+#v0|c$LyS&D^~ST<ve%w^V+qEYhy4n@-G^
zdFuY>pWP>+efC@K-isX_mpZR~_Fl(Dj^7!2rRe+j|L2oWKKS5QzdFhNX0>1Y>>43t
z58SzZX6}@zZf*&jzI5qQXD8DW7U6)uQuWt9e~;vHvHjwmJJ)}6@AJ>^y;0Ehz!(lB
zJ<!?C@qa`7pWS5lZr{248{+-VjXQUyom*@Xs1paW^EOH30>kt0LC2*}KDo{HmAHR%
z{SHfKB-1SVJewC84MS%K$N#YXgZtdA8=v31amSkSteYrtXx9TBA2Rlbzr4>z^zOZT
zH*Vjt;qU4&iGZ4C{J-P)|3o@KmEY{*zI*r1-I>#@gJ4&7$I?It2j{_GF5JF-^Zs38
zym;yS`BU3B<m8MPk&%&PZNRv3`+-{@5&lk&|Ld<iJKw)gmAAJ~D^>V;d#g+tX=!O@
z??D#+L3XNCwOXA#d>i@G4<CH>@b|yGN8|L-GXdTzA8#LTZ=WRMPg8XPGNq=f=?NC*
zfrsCH{qPH>Xxr1%Qd84RCUX+;o2iA2G;fYwlxk8bl}aoBx8FYej;cS9o|;NeFd$}g
znk8`#iz!v*>FKFV<=8p?Z@;{Bo7huREo>PX^gnCChZww5O~a^5YPBWY_u%V?55E5W
zc6DmH+LTUBFn+ET`X_*)Nel2a5q_mrT;F~5;H$r#RC{`Qd-|xnRVo#+Ck1#1B&B5p
z*m+Z@)U3bi=eq{*yKley`kUcFwB7agB=X_v=NeEYnW<N)jDMZ&jQH-mZ@<ubdwF?t
zNoDPBT0oKyNjQjvY3MzP9{pM46GVlq0doe=ZeqW@JbhBt*}d6WN={8vafrOR@k%oX
zu!nuTQ`LL>Vkg&7nQ971Vh=Fkn7PJGX(m<Q+$?38SQ|`*%xUzXDv1W``Tp4{WvkQy
z1R}{qkNKEP+J2zercFAPO07;(sxp7L>i>=O|KnEh9~8H;m{{BM5gR{M;K0H}0<aSZ
z!BJobLKhbp=;{nElrw+T$HM`Jc?|&3Aa@YEdw|$u2<N{#lb`D3;|DIjzA$LeAkJ?M
zviPmip#lgVB7r#aUzNT>(D(^K>E}qEI_2TyzXp;28YzN!@?Uk~10X?0erp{0t>JE<
zkM{y+@>g90gTW~{0$fAFz%?uioFip0fc#gtXc-LDnZP|x1@2lScxv?EVK9;JYJ$kf
zNKhz(z!Vn(dUYVE41o}z6buS&6ol#HAl4KQns^l?B_%<+R0J7HG2|(PkfM@6p3Vg_
zjE<0-NdB%y1mlfD$k(_)VS*D(NMio4JB*C;fDsAg18dzOHBkfUCLQPV7NwHko9Yas
zGo4|4jx&ri2S8<-6IA86Kuv)wOeu1O+HtNhad<3@FA9Z;<02rnPy>}Y;ZU6$15*oB
zP(CUNW|SJCtU4O<s^Ved6eW~TmO}Xy1^A|=foF0SxTojAko1u-G$j*;Wn_Z)@LUMU
zraUtbe6w<4Xm$bk=9fTHW(sIW=Yp)TfPCRXh#Wlz!pDt)z~WK}FD(VxxDtpfD<YZz
zex)^_D60g&ifJG(uY%x;S_rF}3PDvfK>E~FP)x1`MJ@Tk)pg_tH-LOrJ;c;61o`ZR
zpqn`hl(Xi7a&{xA=QM(H-eNE<UIcmM_l_?Z4!K36pt!gg%F4>1zAObQCX9hm)AM0o
zbv8_|DTBF_$H0>5#gJ294r%kJ!6@=!%gNuZo?HoYX3vJ@b)~Rsb_HmgmO#?d#Sk-p
z1xOdHgvdtnTN{^yeCaySEnQB2>Pj%ISpjjYH-ci#CXg-POg?Kf#E{P_U)ut)&+LY{
zb>y?IZvo}T7SL>H0sSVr-qdRGVRu2oHu7g%cS6{P10db9pZwS35Y>7LRNMB0an}LR
z@220o&VqDrJDBz#frJCc$wxg0hC}B-fAl=44_^Sosf*;Fz5*HRmV$ZP_AZ|^>d0##
zJ@yNTKK2GkPyHH{Cw>8Or{4nEi`PK&;_IM4`x>auy$u@jOQX)+0BQRTke$B?ap!M<
z`la_Fz3pu%Jo6e%eCaw&difowdi566{`zC6`R#Ww^EY2{{%H;QrcV*g`50mTCkW4U
zyv+HfYsfF%c#ro@d)a7sf+XJYgT*X@JeYF^_i2X>^BERDFQM7CoZn6jh87=6nt3m<
zBdKMH-Q{XN^YR%2;5L0d+oDriyt`KgAaGhRox5;xi(Y@BV{P|F5Dtk29zMqD;Zf6P
zTMplrUg%h7!{FmHZ1IJQ7hjm=CT(!#?o50Aqict{i$gb4F-x1LyI5|@-dth1s`3fl
z#uZ<_aP6bt#aN$OeZdk}^a<KTWtT6$`O&BUeXZLgkGZ&+%b)Y#%!;qx`SjhlE?#Wl
z?nTX7C<T}4t?W8yE)`#W_uhNAZr!^4A=@+vH(%bSAXQcfkI*kIE57sb+gESh`tZfY
zEJz#mq5_1g-+J|pZS46?RDAbc_V8lMk*|<^hmStK_vyX6^y9mWm*2koM#rmHKRml=
zmKD6inYZ7*`qsr)>GDq(uikz8*42wwuYW+!Mmrziul?}W)yvc+y8QFyJJ+w?y86z?
z_da;%!w(m%VQmO6e@M-7<q!Vy?z@+7z5RzjP$8wWeEqH;GCY@Gr1G!sT)y?*$Je>i
z53irKoSPo!DtMM{Gp}EM@BI(2zIt)<lA5Vgr%d6`Hw<Na_8&NL5Wau#_2<{$yY=A#
zePBRfU`T0csV`S9DIAlXolF<se)H9hTmLn2?AURIV?)x4i6NivI*v65nzBc5<=@`F
zHDN53k1Mq#Px4X=g3Q@m9RDBReEaqG<gB#9;^MJmON;ZV3QsVP4a^#oJ)Udn!Qa05
z%gCSrN@P376%`egh7?eBW5?uL2m1SOzc91%fRK`s(vp%Ab4W;lc}ynQrnE8UAm2b@
zC@IMg^bHKm8Vx;DWnorUU_d@A4h$Kabrc>;6<HyHf%(NDfdyIpZT_CGF0a^ite?U@
z(|^{vgJqx6?Kbz=r`WS|8<8D2NF-zpoWOUG1NeIhK;-U8`w=3~p|ltA11~Qx@EGO=
zLx&Ef{fGbp{Uo#p5re|d3FNf*&_s&C5G$rVf&`?YgFqwmh6KGA?Kgs8V0a|Azi^ky
z!Aq|PciLBIX&<3fhe4)F3}%G{(&8LpxLN{PYA49jJ3>*CGvpgwpd`T&iVdEiOAdwH
zWG5&{af0!~ouM?H%CekcLM~CZ3ltalK-EZBm^8u_Do4@&px6bb7Q4bz<6WVqY#2-&
zVT8QWL>OBd2V*CwpkhQg%p7mv)_Sk30`MD=Piy=*7*;SI0!B{+RY3{_7ZgHhaRIm9
z8z)YLxQXQuR#6EN6*VBQs0P#I8qhX84e}Xv5b^W^2zq)EDCf?BggFa=97jkUJsQT9
z7Q@`>RUlii3Zj>60QI8fpjxy7)XScMh~--#k|=uRHc-(T%GOaWt)cQ~_d(*8tq{Mt
z1roNjfN6UR=$_pPnr(X_sbv=!n|Fh0&pt5hJ_4#8M?t&y1&H5s42;hmhs5WPg7M&K
zNH}sD5|5n*>HbcLJ@hifA8!Zc!3&@{aT$u2Er;aR7H%Cix9)(HJv*Ux%_=bOI0CsZ
zT!zXwZo`c0pTexW4`B(dbvw7LhPAt!x%F<#XFoFz`~TB_RO)k|;tZ}(GRQ43FMAyK
zdkoo!0WMDdDe2=!@EpP+x#`KnXe}rzWj~Ex6RWFhDp`0oC5QeAEUTWjU_m9>DIZBX
zz`BW3>Kd9RXM#h)u++k_u=uH&)0P%<k(bIv3rE9>S<|OCHqOhn1HYw{r;mb_(;FI}
zUb>8|yu;F^lb1iUs-Yo&c#JBZe7m7Z39w;JLy|@l7iZAfi^7AV0oJY#3l5iRW3_|h
zBKWA?`d|<DIDMSEdshJ16znPU2sZaEgMa6_Wgu5)Q`i%U-{Hqu{$mr1WwRX@i|Yse
ztCfZNdD;^Ri6oZX?#G|{S;>Qlwke#)ehK)n$3KbMiI~0*ctX5xL`tF}qM1a?h@K(Z
zY@xM8bBM-S_}u<YeWD#GY$E!G=zlEuZHa|r+KAY3ihD22jzl`5I-=%CKldwAf4ASs
z{0Drc@OS-((%%_X{*D;u?}BoF*MCYQe7=n~YVL;z4||LFj}SExnTQ^Xr~kyn;@&&@
zz}}nwN|aCSiHK5&mPGpxx*Qka`e%)w1hsxbRQn21HB5kUjC_cK2ckSZ5oNVcqjc4F
zl&xt&`N}OQudTz_oSeUh$A-O6_3R-U&UEc(;%7Sa(i7lE8t^Ydd_5at{M=sC_=~^S
z_zF;I#cHJ>SCpq3Q8r~d#;)9kv8!A9Bq@=6)mD_1PQdV};G2Yh8<F~F=oNd*>f)2&
zXQcFV{6_1`V-0q9KzlpjNG!BRHy>~G$sLVh^-cZa?z11uH>0e0^rP_5VXqMW@odgN
zA$F$I>{RQ!C&lmXWRIbQTj9g&NyHE#N}Qb@;}bZ$plf6-4oT0&z{=?uJf#7HYGz^Z
z)Y%wXw+JKVuj$zj(k;cD#TY4%{D|<+CvtflZoi4mA$Gv`@(*Db3+y;qvumLPpoh0R
zhLl!f%!;izG`j%p#gZqIft5UyvmP4{`Lc}|ZBF>yVzZve{`E@ipn|zo4{Y0VbF|}R
zE++~Z>WCgv8A^r><;p~Z-3d!322ZL(zcCf)u1`X-hu0JJVUSXfF)O$C=!0xcGfH!^
zz9jsMn7#NJeE|QV?s=h}qWeLlD<Mo@*gR!=FB^ukc}qE4!YFFqO7zYtKt~@x4v(Xk
z4|-?jVf4He7&^6{`~72mV0sq4Y)f|^*6&8?=0g}=H2NOlul}iXn)oAC{w`P5WE0~o
zxRs2O)il?hMfutmjuaM(TgOw>>?RzVmW^U}PXs$VbO{JXAL^T1tl~%eAf#tJM^|I`
zzLzkj?IuUDXRcwS$#jG8n12FxJ6eBQv=;0Px7uHX%CUugVpdvdeG95=D00R;^fINR
zm~`vMu-lTIK!Af%Mq>EpBN)5q94hJ?G0fln(38%Ea9{Uit-tsIlex-IfSLfpKB>9~
zZd<%+M$fdM<{3U`_hjpKpsM9CDxYsd#mUz&VBR{kb8z@c{csKp;cOBkd9snsh0-UG
zy+9S<)UGDnjI{o=o>r9iz-`6M@M<>jm=$a+n9MgFz{uxb!pJl4()fRX@($906Td|9
zP~V?~-Achz>UsQ&)?j#8z<I*w@k97y0tS-og%34^T^B%om{`(7-d5b?PjlEA=BQOf
zt!FUm<l7iUm^nK8K1LmV4WoCTL$49VKMOk}pAkjfV^CiGH^M)*FWlCo@pn9{^%tO?
zVJ|K2A#*Ek-A1BKEvP4o+kOb6PQ2BHJND?S7`^=%Mz3kb=+(^}4N}MdZ2XQszUW&x
z9-|knLpj;hC`HuK{?=x?@1ze9eZ{bAM`iHXtuo)xjh*4vZ{3CJW0x@Q!Uq`F{w~T7
zbfTeoA0}=kUMg2T(~QO~q*v>k(Iq6}2Qi8U4n!}b2_vd&QL$(hDwc1+sF{s4Uj*HA
z+TI=qkd5`z>Hp+6bnxS!4p34Cxa1iKyFnj{$~D_~>=qrj;x-WJo;!s~!mR9gAN7aM
zVbb;;Xxi3-rtRHiZf@-&iF@Dn$3ZN{z`O!9JhKJkpXKY0Te1qh5|YtgB;xGvV7UtY
ziznb9${if}J&K*3-B*-P=#5_+AlYk(7=Wt9E4#4U%G|JhAF58jPBOoV+LM<tv2|~s
zc+D-{WNL2d*X|6CjN-<Nk$UMW9AYqb@wx^EV@&-*ZtRs7J1t+moz}w!9N<3am&7xt
zH-1Ba=p#*S?PJ)PTnsz*lg!^iRogW*?m65OGlz8tnp=5F+CqEcr>3EAYAU+Z9-}|K
z@zUwhuzD@}m`L7&Ze8)z8c@5j8MRyXqI&D|sH8cjXgP}V9Vbz?>kLXKl>Mr&J%x5;
z#@|?9ZFPpzmtADX&%cM7Q@_BZmR;T08E(Rx+{*N4JBAb$p@&?74s7h7U~W43`jJjJ
z_Ov(U(=o2|15|Y0<ZLe^+4-9&Wz<f#m`JvC)2F@nrr}q=aE)8Ok+(B8*wuSZ&@=C&
z{JA!iujA(?kDZrw@(v#RfPjFXZDXu7Kxse~8{@OTLe-f!QFZcFR33W;m4{!#xcwcd
z*n1WgyH25O=Dg2(uLCg`KbpdHjM+%5zH6R4!^t9U_X}i4Xiv4anTYi2S&Q6v?8KCv
zM7ws<m~6xNHLEdp=4=coDaV0I9nC-cC&DcnFaYg^Lewo?&W$ab4+&(ujGIY@&+>Sz
z>m<_;dF_lp6Mi2n_NWhVSj;PbILh>%(|N+K-FuRor@BLJoNZw;H*9G|?dDdDr8=~9
z&0{BhI&c)@PhCW9=XF%S{9mZP^a1M5zm3XWN6|Ygm$M^3)`y_nJYFBE9os&{Z{}sG
z-N?(9=||kGd2Ai?w!uF==Cyl=7=BLn+xBt#u03`UleXE|7mL0mGTqs?9}TBpM$LtH
zIm|3KoOu}&51+)8y}L1G&rXc4u0-R;^{84f55<E9^}o*<I+WVj&d+~~O<*!(eXx!J
z*9XfO#Lb$^_Cjt}*%LKKUw^QR;n$OHC{MqM>K9%m?5#F)m7k~PU3)P8g_lr$@g~s?
zj6Z#e<bN1bcJJgcr`k~b>XjUB+4QGyh(_Hne%Z8Xm`r2I)!(wCYYdp|tYcuXi~++h
zpEm1LYpjB>moof}l+WyVs6N<1bLW?sxP51r-tcy2CmN5OMfC+5myYY0aJ&tZ_w3~`
z_r{&Nx0`&^QrLQfLKm0*_XxDUvH8#D6W@oPdek)!Ht{;7m^z)sD(nffBhj-~{EF5S
ze`9+A<M!Q{w6$Ar680ZQ&G~DbjwBs9#m!f%yi@wYZ6%+igeRKA;z4fQd}8`()uY~H
zpts<cl~rD{$X;*7&M5ZWjnB0Q&T)P2nzP3{IbAWla1oPt@9D-)WTy7CTbWMTVBXi0
z6f<XF%;airukb_o?L|TiDJZbfqrT?>(;r!G?raPGaaQcnAK<>2H~(};_v{WHKRv5E
zbs5#|*D&e1gEVJJpJ;p&C|8jUQg7aYQdSr3)8q@6ps}tB$2Mf+_!)^<R;$K}Nzqtc
z5rj3RUN~j68)hds{^%H}Q>0ihdo1S6ug0upvoUS$GBj`A!sFk<<5#ZU`n|teHrRrH
zL6`h*;)UpU|9)1pq4g2d9sRLR)DU*lu6>+dGFi(vwxVnm`Mx!kD9=yDxWq72#W<rX
zQiQ4~5vFP-I5Nozr;c{Tsbefe*Aqv&pptk(d<8#<-*1Qjoy2xHQtOBnsg77~mf*w$
z5tf(+V1BwEW@pEuDn0R<jon<qut(m&oh1J^=(<JGeDo9JzGJ99e;tz;c4jjPd&cIq
zSTHpmjmm+jjuc~>+7XR1F^63jBStmhS4R`Yh%ndeL^5~9+Oa&bek5xoC>H+kIxxu9
z9*dKlv1+(8R;D>|_{ST?I6hv8W3)odiWahXaIFpgMHcxVAvzy@ljgwL_d1nl-onJa
z2RR*N_;VN4U}df+P8#8g)j6(MMfv1Wu2@R#6s9_1MXn2uBFqfGCYJhUkYGuUGuDoC
z<;l{A>H-(k#PmH6Jlq_xBGU!SGhA?_&JjmYe-opGI9w*g2^RbbA)>!Xqa_j>{FN5@
zpP~E&!%z7^Y1@r&Oxt;zpS_|1t2143Qno9Hzh)#+9*=)=zAH{CBr4+dq?9mEDssWv
z5?6ex)IudTePDW3?27JgJ@*v?2f#5Y&RqRjq&smTB8&?bqBc~B#d;A=G}4$-Kgc(1
z0GmWu<1F}3Q2rvrPjouwwa?zr(_Bf}x&<eW8iv(bE;uRYar{#Xc>Gf>_-n`TSQ+N0
z##^Yg=NK^jdTGxwVEV}FEls2G2`8Nl6JbW27%P$;u`EeU@)u!Zu;^px`L=<z59LI=
zNdK=;-b(pFqKk?hCx4eUcM2Ah-I$n4I!W>`B;90W#b1-(KmI9{m*u-)COtnU%ei|#
z6aIL4H~yjS4p?oGi%Bj)WtbQzra5B;>Aw~KNRquSP&BGHb_;$1QA5-XJV5y?Yz`Ct
zUqt=-uluxf=KqD^SBBEOB)KR_F3NBbn&KpwqLQE{T8t*8gtLvA@s1omCg&RJOR`Ra
zdcvud^2FwECH2RO-_8zD86o0iQIqS6mDw&>K(ZN|>`eOVf|cn!{vx#q^#S76zOdW$
z!IkJ~vY|%_`+2%POxGPTmp?g_Y6|_%B$aS|u;OQ=qP97^X|bIN3NcP9w2XnJ50i>r
zu!`m^n-gVuJa#r$(n!ZgCOUERXENchAnXi3)6t6IE?7;(>`#eNg2q7cYw!bKf%oc1
z5YaT64@W6KPIKWz?CI;LGYmr>X(KK253|7^(T$%`3dz`N`)e&^T?4Fhm*LMK`;uvJ
z#6*Pzhtst-igcdFH=b-$Q6g_YCzzbj6e|3Ed^os13HDz7@Q%ER$ut&EkzTEm9(?(E
zQ<TdCR=<(PBAskM)1lsDpeB8qKsJcs?80opZN)w&-I>-3e%)ZtTgQ{hC7JreY{j@l
z>RX8T9YZh-`Kj3Z>5sii9i&W+6n(<%Gn;F9H2&%c@nd~pG=kda=ClPfN2FVm$zJJW
zZLkw1$|RiJb=0Ras=H9{i1C5K1JTj&vts@~luTjZkq|8I%%?H0$a2MTWG52IW^jFp
z6nFK5&Fd=CcW!O4P!+9lY@N2nt|83jG*_8jo=CQHc#PzMAy7E|-;KL>GWZKp%weJ%
zqZ6EP(nx*|=EOU7j{{LM*{5+C&iouDV)|~KGg&0#eA*|K(L7~q?g)kCpYcJ$=6{#I
zJYljk`in|T;i9*5l#)kdY5&0HhL&V+ARS2}T^?a{!cx)+Heb2%A?%E&j4&4&oG>F+
z@{KV_xZfBg4*&7y{`V4-TfD!pDj`VNo)#neJX0?IXD-e0LRu4wXpBa&{S3|b^jOJv
z$q}ME#JeTIPmpRd_4vx*KPD9cI3)Okx6x0iG6o3D`T$X+Hss0PqxgR*eP{W8<oA~E
zb(&24_d4voBNk1&0{nL<EVr}dY}eAn@+Fq<SxlDiSOWMB&A<Ge4)mYj?Ui5Yl{fXu
z!BTIZxkEp>xI1sM^rOkrzblsfvF~?S0d<~zzr&)>_^|u?9VSO4h9zA7aA5!6?F91J
z-Qb53^Bso%Ajkh+VxK;;cgnveI!?s>xt0EyL;XC55*dj~Ebk-DA}S+FC-NuysqdPx
zm#o?QMNI70{qvuRo&)ZW-*mlCR1o3kep2c`@UuAf{*WKpUO%$EeiBq@qfk~@fH6si
ze})BlUnAZrM1%TkuvcPl6JCM7eb+C%+y|7#`nz3KQCqg})F>1|C@U^R>4KF#-Zzmg
z-;DC|DvXE?W3kxECwNDI{qeWo^wT~DxC_5$?;S~p3Q!`jLk9<YbROo5Lo#wPsJad#
z8`om&s^-VuwUDjahO%)b7#85w`6FkWEZ)lg<jya8w@p(D9qa*}MRqvMYXC-$9)q6d
z%pT`o93TA_4RS}vVFBEk8hf9`ibFBE79#?^ZWD%}Cm0J2(LSMr-8ZbSL6&zT!t`-C
zBsCkI1A@^tG!nhiN1$(h3A$^IXfJ&HOv6qfM8DFSZVa_EFfwQ;dv|8=j{%VR4_KnH
zz8?@E!ML&sJ>Ct7nZJU22gAw758a|==si3a#U4W*A3HlcbWhL2unh+==Gf~f-P?}g
zF`?|7x!<`(ZOf?bhunJ!5rbGf`LXkH)%xzUe0B~tG$oUNr=q|3i=90V)R{1*`2;G;
zDv{bR?5}-wfaFc?y@GHzRL)!6^PJV@9fH_rc4JiQDU==i1<GFhH9AN3e->t?psE?%
zdvY;a`5)PQeynYO$5^eO;E^tT04irUa{X1?oEdTF>D!KB)bTel>f8;CI`SGu?K+Eo
z71N$54$IDHWviP}K6@dC`FZB{ZeQy!KB*5Pds07_>$CMtoI6uy=bI;~uV>#u#s2fC
z-L{ADG^3iz*}GAFwa3mWeY0{gu(%WlM#b{6V0RB3l9GiXG2z#Gx33QneyJUu%eQSk
zCwsOPwFla`GY|dYHvT+#J0C-}l24MUN4r87SCms9SX@@Ipb0(HdhU$cU8%+3idytA
zm{8>G^vK@MuIsDp_yA$BULA<4wcESTq_^(o&dSs;zJ&?9_H%97p3mu)Eysun6VTbG
z=Q~IPLqfUpsv%mwU7@QhhE+{P&E~zR-10mswjDx6;|la0GRXQz8Nm=faJYI-WA_=`
zHsXEpZPXlW@6m43_U#y6T8b{d{lD`e959fZ|Loc+I0B`|UPXoNd1d<zl%D!EhJ^>1
ztnJ4wS-VkXIb+hbJdbgw-$Ln@{TQ>R8I^R;dZrh@dNoE+`@=FaaX>`O51xN9yCh$_
zjyqG1-?5+TlkVA_{5cVOA4;R({tOBEu)fm6S6<`fPBK@XyN1Tyhmgey6SlRYa#JhD
zZ{LYY`;VgG)J4>EUPsM^chGS95-QegLU%=6pY8jmrSa$NR1Z6A;Nsktvnr-zv8kpy
zOZ!u#r+)Raj_#{ocohwMkM}rNOFVEKwda40>X+U}!<knw>EN-hbCK|IV^I3kRCM<C
z?iqJ<a>B&Tn|qvhuvj}g>tHfg(cFoZhGbCN5~3}!=YMlf_53;1?SGL!*P~~W_8vgp
z*{i5O`x+)5K7}cJc0YEOWLUj|xA*pspQo~SBe?iHI|FZS?K*E^GSDnuiQ#@8?0inc
zol#u<{8-%aSGjVA)o`Q@HEnOBY5x)aT!kp1btfk8?s=YKShE5HvNQX9kAa<=Xq%Rx
zc}KSl5-ev8n!1?}**=NduCc_q+mx+GzvE<d@I^En>p)ZME;MZ0fl9IgajQ3?d}bZ3
zMMaob6^|3AD6xEs0?Q{$v8*~8_3?eb&lsN+jH!hh95p>3bLz`6W5EneTDlmO6%`*^
z#-5!Mw6GYv{JD<z4bPuM{n7KhzVF<Dsq<=4WeDVaUTge;#nKa%609la<8f0cj|dc^
zz~S+^;5FC*$0hSI{|QNaygyGNM76)uI7|D}iS`n)*zzIu;R~FsGS)4{iQ^*pxV|N(
zU&77~@?0=QE5Qu%U&rS<cgMiTxN>I`c6Qxu`*=8DWwtA3s2nkoFsDmJT)aLtT>KT;
zJ9|s}1=jY7o|B!p`Ums2?Kr+Dv^y@J+a1&9Vn^0kaH%DZUD6$c5A^2uMJ(=KlJ1O!
zCfcWli7`Vd#?nLyj?s_|10-cuyF+cd5UnCQN3<vU+TS`77B>E)z#zfGL}xA@Hzw5?
z$7i}=X{IxGo-w(IZ*Kzie|VxJrjsn#HETaSKuG&Tz+@Vq${ZIo#E7w&FtC_ynMs1l
z;i6l;*BxrthiC)QNupD+7k+zoM1sd7RqvQ)q$LhG!iAIfM8YzfFclAX!m(L=Y%oDi
z?GauU_hE6@YLa19CLeRniWUEr<lg5#l-gx;A)aVC(E-`vS1zW-x!APd9RoAS#NBbo
zG2L;<$%U?%qLy%HS1fkM;-+R6cck`5#)<z<ZA<%VyALd4q6lsA$f^-4$v@cnK)S|}
z+7@@k63x_3O@U1uk=h=S;Mf&|V{+FJ=2FuAOsV9L)ON^|wB0+=b1|8*;`d5ZoG~xK
ziHiqX<&e+L;tF`Z%ro)#_0%qlTQa$iHaa~@jSwHDI{xMOh#^2YGFu_JHJaK_A>Cr}
zMHUMimE?pa8P1p><KttcH1-7s$A{_Bq6^e+)Q{Kv(-PG=EHO|xEiGDnDpM|gYoyBY
zZjMs&+f14G)szVFekv~{`d7ah`M;LlLBypG9I(mE{izTWQ9u*_oh|!j*TM45F87_T
zg*ZpmN=@+C-}kh$A?Am7eY^X>`t9x&_UA?%`uJ`)kgLGlw|BzsvOP2VTD!-Y39VyZ
zMA{$m{h8l&4|v=BN1_7q;}0qPoE|BC#i&$=p}eA+`S6dTVnbf1dIt7-o_&jP8LVr&
zkokrJ^cdzvdqF>Rr#-D#Rz40Z7?06QHlVb0!au_Nhm7bALg)bTzJnYdNka!=L`4nx
zkmET2jrnoxJu9wm&!HIf^dgikSoJ70GNecRR^=ytOC$3})uI)gZ^HJB@@My9^vZ20
z>g9uZWf!8fpx_JkJ_>u5%?B;*vDM3-;r3wKZTm3x(90;@--(gSw{-0#9V8MQ7#>Oc
z7f%crJrRQ=g1Eo-rH>rERJ~|9?-%Sog2v~L(^^UUvn^XOxS){V`#L+Ld`2C*%jD=c
zA|E53UVuJvaqqF`)wNIEWcyFmj-#ldy(nAbm2>BipAux_$2)L)sR+WOIdK`42QQ#}
zdc$AH9tP9i{R{2h7r6HfjV-$|{&+hYPn^fZW2Z5!qO$8f5-+`;-*au}_j{^|6TW2c
zgD9SB|8HaSZZsY|jR{9iqiN5+uKiSKaY0xA1&)rG+-iA0hxSX#(s38q8Yw;Z{wwi&
zk745TM^W4GG^z?xP?sEv#RWcCQ#K3({kp$TNzi-Y*wQ%6D@{a2;iy!4ereQu-yhZO
zI`a3i6I9%~UNw@|Fj^zo+R4`Onqn7p6x*S{mjHA0PME0@V~$kJg#_vO7<Psnd*Q!N
zXQ`dIbtO~phy^K5Se5UBxyepgG0Fwyv{sd-yI@h0GnOPcJ~D*}1FX73&kNZa7hjUs
znx=4kq+@$2T2o3aYv*`cFWLE-hVJF*oE~OGi~4=1-W(<hAE9=<o2KH=>&DaGh}q-e
zYRRKKjpMb1AmJ08myk}nQeDHdWRitRA)-Y3{g_|Q(g4;A7C*IqvkJYwSG7$x->!bi
JV#M_9{{aL(sHOk_
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/jar.mn
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+instantbird.jar:
+% content branding %content/branding/
+ content/branding/about-credits.png (content/about-credits.png)
+ content/branding/about-footer.png (content/about-footer.png)
+ content/branding/about.png (content/about.png)
+ content/branding/icon64.png (content/icon64.png)
new file mode 100755
--- /dev/null
+++ b/im/branding/halloween/locales/Makefile.in
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+relativesrcdir = @relativesrcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DEFINES += -DAB_CD=$(AB_CD) -DMOZ_DISTRIBUTION_ID_UNQUOTED=$(MOZ_DISTRIBUTION_ID)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/locales/en-US/brand.dtd
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- halloween branding -->
+
+<!ENTITY brandShortName "Instantbird">
+<!ENTITY brandFullName "Instantbird - Nightly">
+<!ENTITY brandMotto "Beware of the Witch!">
+<!ENTITY vendorShortName "Instantbird">
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/locales/en-US/brand.properties
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+brandShortName=Instantbird
+brandFullName=Instantbird - Nightly
+vendorShortName=Instantbird
new file mode 100755
--- /dev/null
+++ b/im/branding/halloween/locales/jar.mn
@@ -0,0 +1,10 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+@AB_CD@.jar:
+% locale branding @AB_CD@ %locale/@AB_CD@/branding/
+ locale/@AB_CD@/branding/brand.dtd (%brand.dtd)
+ locale/@AB_CD@/branding/brand.properties (%brand.properties)
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/locales/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/moz.build
@@ -0,0 +1,8 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['locales']
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8017f948180f14ec0563b8f4d0f2cb91856b09de
GIT binary patch
literal 15330
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¨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
ADF6Tf
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/mozicon16.xpm
@@ -0,0 +1,188 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* XPM */
+static char *instantbird___[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 162 2",
+" c black",
+". c #010100",
+"X c #020201",
+"o c #030301",
+"O c #050502",
+"+ c #070703",
+"@ c #080803",
+"# c #090904",
+"$ c #0B0B05",
+"% c #010508",
+"& c #010709",
+"* c #161406",
+"= c #161408",
+"- c #191608",
+"; c #1E1D0C",
+": c #03111D",
+"> c #04181F",
+", c #181C15",
+"< c #22210D",
+"1 c #29270F",
+"2 c #2F2B10",
+"3 c #302F13",
+"4 c #393918",
+"5 c #041422",
+"6 c #081E21",
+"7 c #0F1F2E",
+"8 c #071D33",
+"9 c #091E32",
+"0 c #0A1E32",
+"q c #11252E",
+"w c #062730",
+"e c #072935",
+"r c #072A35",
+"t c #072936",
+"y c #072B38",
+"u c #072D3A",
+"i c #1A2F36",
+"p c #192C39",
+"a c #18393D",
+"s c #213537",
+"d c #283735",
+"f c #403A13",
+"g c #254238",
+"h c #4F481A",
+"j c #524A18",
+"k c #544B18",
+"l c #524D1E",
+"z c #5A521D",
+"x c #5D531C",
+"c c #545323",
+"v c #535625",
+"b c #435334",
+"n c #56543C",
+"m c #605821",
+"M c #636226",
+"N c #676228",
+"B c #7E7022",
+"V c #7B7028",
+"C c #716F30",
+"Z c #707537",
+"A c #777833",
+"S c #75713E",
+"D c #092E46",
+"F c #072F4C",
+"G c #083141",
+"H c #083240",
+"J c #093245",
+"K c #093445",
+"L c #073449",
+"P c #09334A",
+"I c #083549",
+"U c #0A354A",
+"Y c #0A344C",
+"T c #093949",
+"R c #0A394C",
+"E c #0A3850",
+"W c #0B3F55",
+"Q c #093D5B",
+"! c #0A424F",
+"~ c #0A4353",
+"^ c #0C465C",
+"/ c #0B4A5B",
+"( c #0B485D",
+") c #0C4B5D",
+"_ c #0B4F5E",
+"` c #0C4C5F",
+"' c #1B5356",
+"] c #3E5C50",
+"[ c #325C59",
+"{ c #345E59",
+"} c #0D4E64",
+"| c #0D4D66",
+" . c #0C5162",
+".. c #0C5264",
+"X. c #0C5667",
+"o. c #0D566A",
+"O. c #0D5D6C",
+"+. c #1C6067",
+"@. c #4F5751",
+"#. c #777648",
+"$. c #75754E",
+"%. c #7A7C4F",
+"&. c #646C54",
+"*. c #7E7D55",
+"=. c #857E34",
+"-. c #847E35",
+";. c #817E4F",
+":. c #8E802B",
+">. c #938428",
+",. c #938429",
+"<. c #95862B",
+"1. c #8D8335",
+"2. c #988C34",
+"3. c #988C35",
+"4. c #988E37",
+"5. c #95893D",
+"6. c #988F38",
+"7. c #9F9536",
+"8. c #94933E",
+"9. c #9B9138",
+"0. c #98923B",
+"q. c #98933D",
+"w. c #9D973C",
+"e. c #9D983C",
+"r. c #9C983F",
+"t. c #A09130",
+"y. c #A09537",
+"u. c #A99A34",
+"i. c #AE9F37",
+"p. c #A89D3A",
+"a. c #AA9F3B",
+"s. c #AA9E3C",
+"d. c #B9A32E",
+"f. c #BEA62D",
+"g. c #ABA13C",
+"h. c #A9A23E",
+"j. c #BAA533",
+"k. c #B0A53C",
+"l. c #B6AB3B",
+"z. c #B0A83D",
+"x. c #B0AA3E",
+"c. c #B7AC3C",
+"v. c #C0AC36",
+"b. c #989640",
+"n. c #999741",
+"m. c #9A9741",
+"M. c #9A9941",
+"N. c #989942",
+"B. c #9B9D42",
+"V. c #9B9F44",
+"C. c #978F50",
+"Z. c #A09E40",
+"A. c #A99A40",
+"S. c #868561",
+"D. c #C0AE4F",
+"F. c #DEC763",
+"G. c #E5CF6C",
+"H. c #FCE173",
+"J. c #FFE57D",
+"K. c #FFE789",
+"L. c #FFEB9A",
+"P. c None",
+/* pixels */
+"P.P.P.P.P.P.P.P.D P.P.P.P.P.P.P.",
+"P.P.P.P.P.P K H ( u I Y P.P.P.P.",
+"P.P.P.&.J y e / o.) r t E P.P.P.",
+"P.J.G.U G T ~ ..! .w ^ W Q P.P.",
+"K.H.s.{ | } ` _ O.X.& > R L F P.",
+"K.F.a.h.Z b g ' +.6 a [ ] P.",
+"L.D.w.k.z.Z.B.V.v . # N.n.q.S.",
+"P.A.i.r.e.l.c.x.M + 4 M.b.0.%.",
+"P.#.9.u.7.M.A < o X >.v.j.C.",
+"P.p -.6.p.g.m.8.c $ C 3 l V n ",
+"P.P.s 1.4.y.f.d.,.. @ 1 = m P.",
+"P.P.0 i =.3.2.t.<.* k *.P.",
+"P.P.P.: q N z h 2 O - B 5.P.P.",
+"P. % 5 , ; f j x :.;.P.P.P.",
+"P. P.7 9 8 d S $.@.P.P.P.P.",
+"P.P.P.P.P.P.P.P.P.P.P.P.P.P.P.P."
+};
new file mode 100644
--- /dev/null
+++ b/im/branding/halloween/mozicon50.xpm
@@ -0,0 +1,309 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* XPM */
+static char *instantbird___[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 251 2",
+" c #000000",
+". c #080702",
+"X c #0C0C04",
+"o c #01070A",
+"O c #0A0B08",
+"+ c #131207",
+"@ c #181507",
+"# c #1D1907",
+"$ c #141408",
+"% c #191708",
+"& c #1C1A0A",
+"* c #020B11",
+"= c #021014",
+"- c #03161C",
+"; c #141A15",
+": c #1A1B13",
+"> c #22200D",
+", c #28240C",
+"< c #2D290D",
+"1 c #39330E",
+"2 c #2D2C14",
+"3 c #312D10",
+"4 c #343214",
+"5 c #3A3513",
+"6 c #3E3A16",
+"7 c #3B3C1A",
+"8 c #041424",
+"9 c #041D24",
+"0 c #091924",
+"q c #051728",
+"w c #0E1F2F",
+"e c #161E25",
+"r c #121F2B",
+"t c #041D34",
+"y c #0B1F32",
+"u c #051F3B",
+"i c #062634",
+"p c #0C2133",
+"a c #062935",
+"s c #0B2C34",
+"d c #05223B",
+"f c #072C3A",
+"g c #092D3C",
+"h c #1C2F32",
+"j c #07303B",
+"k c #0A313E",
+"l c #242B2D",
+"z c #272E32",
+"x c #263337",
+"c c #263E32",
+"v c #25393A",
+"b c #393E3B",
+"n c #413D18",
+"m c #2E4335",
+"M c #354233",
+"N c #3D4530",
+"B c #4C4315",
+"V c #44421B",
+"C c #4B4519",
+"Z c #4F4A1A",
+"A c #544C1A",
+"S c #5E551E",
+"D c #655716",
+"F c #62581E",
+"G c #6E611B",
+"H c #504F22",
+"J c #545323",
+"K c #455234",
+"L c #4B533B",
+"P c #555B34",
+"I c #5B5F35",
+"U c #555339",
+"Y c #625C22",
+"T c #6E6321",
+"R c #63652B",
+"E c #6B6528",
+"W c #65682C",
+"Q c #6D6C2F",
+"! c #726723",
+"~ c #756A24",
+"^ c #706B2F",
+"/ c #796F29",
+"( c #7E7125",
+") c #76722D",
+"_ c #7C732B",
+"` c #636532",
+"' c #6B6B36",
+"] c #6F7231",
+"[ c #64713C",
+"{ c #797B34",
+"} c #052640",
+"| c #062A43",
+" . c #092D44",
+".. c #052E4C",
+"X. c #073247",
+"o. c #083442",
+"O. c #083845",
+"+. c #073049",
+"@. c #08344D",
+"#. c #093C4B",
+"$. c #173948",
+"%. c #063555",
+"&. c #063956",
+"*. c #0A3D54",
+"=. c #053758",
+"-. c #063C5E",
+";. c #083D5B",
+":. c #073F60",
+">. c #0A414F",
+",. c #0A4252",
+"<. c #0B445B",
+"1. c #0B4B5C",
+"2. c #1E4652",
+"3. c #1C515F",
+"4. c #264145",
+"5. c #2D4B4B",
+"6. c #3F4542",
+"7. c #3E6F5D",
+"8. c #0A4462",
+"9. c #0D4B64",
+"0. c #164F63",
+"q. c #0C5365",
+"w. c #0D5569",
+"e. c #0D596B",
+"r. c #185C67",
+"t. c #105769",
+"y. c #226265",
+"u. c #2B6662",
+"i. c #356B60",
+"p. c #414846",
+"a. c #4D524B",
+"s. c #565C4D",
+"d. c #466A53",
+"f. c #4B7559",
+"g. c #597653",
+"h. c #67674F",
+"j. c #6C6D4F",
+"k. c #667C4E",
+"l. c #69784A",
+"z. c #7F7D40",
+"x. c #696B55",
+"c. c #676C59",
+"v. c #7C7B5B",
+"b. c #817426",
+"n. c #8B7920",
+"m. c #81762A",
+"M. c #84792C",
+"N. c #8A7C2A",
+"B. c #847E32",
+"V. c #807D54",
+"C. c #75844B",
+"Z. c #94862D",
+"A. c #98872A",
+"S. c #978A2C",
+"D. c #98892D",
+"F. c #878134",
+"G. c #8D8332",
+"H. c #848238",
+"J. c #8B823D",
+"K. c #86883B",
+"L. c #8A8B3B",
+"P. c #928533",
+"I. c #968A33",
+"U. c #988C34",
+"Y. c #938D3A",
+"T. c #988F38",
+"R. c #9A9236",
+"E. c #94933F",
+"W. c #98923C",
+"Q. c #9C983E",
+"!. c #A89227",
+"~. c #A5912C",
+"^. c #AA962B",
+"/. c #B39C2C",
+"(. c #A59533",
+"). c #A79834",
+"_. c #AC9C33",
+"`. c #A0963A",
+"'. c #A49D3C",
+"]. c #B39F31",
+"[. c #B19F3B",
+"{. c #BBA027",
+"}. c #BBA129",
+"|. c #A5A13F",
+" X c #ACA33C",
+".X c #AFA83F",
+"XX c #B4A234",
+"oX c #B9A532",
+"OX c #BDAA35",
+"+X c #B5A638",
+"@X c #B4A93C",
+"#X c #BBAD3A",
+"$X c #BEB03A",
+"%X c #C3A92C",
+"&X c #C9AC2B",
+"*X c #CFB22E",
+"=X c #D4B52C",
+"-X c #C2AE35",
+";X c #C0AF38",
+":X c #C7B034",
+">X c #CCB534",
+",X c #CEB837",
+"<X c #CAB738",
+"1X c #D0B633",
+"2X c #D4BA34",
+"3X c #D7BB3E",
+"4X c #8D8646",
+"5X c #838A45",
+"6X c #8E874A",
+"7X c #8E8849",
+"8X c #8A9247",
+"9X c #959541",
+"0X c #999640",
+"qX c #9B9B42",
+"wX c #848154",
+"eX c #8E8950",
+"rX c #8E8B5B",
+"tX c #938C53",
+"yX c #9E9556",
+"uX c #96915C",
+"iX c #A09C40",
+"pX c #9BA044",
+"aX c #A5A240",
+"sX c #A9A440",
+"dX c #B2A247",
+"fX c #B7A74B",
+"gX c #B0A151",
+"hX c #928E62",
+"jX c #EECE47",
+"kX c #EED15B",
+"lX c #FFDF5D",
+"zX c #D2C16E",
+"xX c #DCC76A",
+"cX c #DEC868",
+"vX c #FFDF61",
+"bX c #FADE6B",
+"nX c #EDD674",
+"mX c #F0D976",
+"MX c #F7DF7B",
+"NX c #FFE065",
+"BX c #FFE16A",
+"VX c #FFE373",
+"CX c #FEE47D",
+"ZX c #E1D188",
+"AX c #FFE682",
+"SX c #FFE78A",
+"DX c #FFE88D",
+"FX c #FFE994",
+"GX c #FFEB9B",
+"HX c #FFECA3",
+"JX c None",
+/* pixels */
+"JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXd .+.@.*.*.*.@. .| u JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXd @.<.g a f k #.<.O.a a g 9.*. .d JXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJXJXJXJXJXJXJX} *.9.q.#.a a a o.<.q.q.#.a a #.*.8.9.@.d JXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJXJXJXJXJXd *.9.<.k *.a a a a q.w.w.w.9.f a a a a 9.9.<. .JXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJXJXJXJX| 8.9.*.a a a a a a #.w.w.w.w.w.w.f a a a g f f 8.&.d JXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXGXDXAXzX .f g O.o.a a a a a 1.w.w.w.w.w.w.w.<.a a a i i i o.9.;.d JXJXJXJXJXJXJXJX",
+"JXJXJXJXJXFXVXVXVXxX$.a i i i a a a a a o.w.e.e.e.e.w.w.w.w.O.#.k O.a i f *.9.<.} JXJXJXJXJXJXJX",
+"JXJXJXFXVXBXVXNXnX4. .i i i i a a a a j q.e.e.w.q.q.q.q.w.w.O.#.q.q.9.9.9.9.9.8.;.d JXJXJXJXJXJX",
+"JXJXFXVXvXAXlXMXz.*.i i i i o.o.a o.#.#.e.e.w.O.j f f o.q.w.j a q.9.9.*.<.9.8.8.%.d JXJXJXJXJX",
+"JXFXCXlXAXVXvXfXl.*.<.9.*.*.q.q.q.w.w.w.e.e.e.e.q.#.1.e.e.w.j - 9.9.o.i <.8.8.:...JXJXJXJXJX",
+"JXAXVXBXAXBXkXW.9X3.9.9.9.9.q.q.w.w.w.w.e.e.e.e.e.e.e.e.e.w.f a 9.<.i i X.8.:.-.d JXJXJXJX",
+"FXAXBXVXAXVX2X0X0XC.9.9.9.9.q.q.q.w.w.w.1.q.e.e.e.e.e.e.w.w.= <.9.@.i i i &.-...JXJXJXJX",
+"DXAXVXBXAXcX:X'.0XqXk.0.9.9.9.q.1.,.9.,.a a O.1.e.e.e.e.q.a = 9.8.@.@.f ..-.=.d JXJXJX",
+"SXAXCXlXAXdX X,X'.qXqX8Xd.k a o.g a f a a a >.w.e.e.e.o.o * *.9.8.8.-.-.=...JXJXJX",
+"DXAXAXNXbXT.W.#X>XiXqXqXU.Z.` K c s a a O.#.w.e.e.w.1.a 9 - o @.8.8.-.<.2.5.s.JXJX",
+"GXAXAXCXjXR.W.0X;X>X|.Q.qXQ.R.R.S.S.B.[ f.7.i.u.y.r.t.#. m g.k.C.5X9XW.W.W.T.JXJX",
+"HXAXAXAX3X+XW.0X0X#X2X#XqXqXqXqXqXR.qXqXqXpXpXpXpX] W . . J qXqX0X0X0XW.W.W.U.JXJX",
+"JXAXAXAX[.1XQ.W.0X0X X,X2X.XqXqXqXqXqXqXqXqXqXqXqX7 + qXqXqX0X0XW.W.W.W.U.hXJX",
+"JXGXAXAXT.oX:XQ.0X0X0XqX@X2X,X@XqXqXqXqXqXqXqXqXqXV X $ > qXqX0X0X0XW.W.W.R.U.uXJX",
+"JXJXAXCXU.W.:X-XQ.0X0X0XqXqX#X2X2X$XsXqXqXqXqXqXK.+ Q 4 Q qXqX0X0X0XW.W.W.W.T.U.tXJX",
+"JXJXFXmXU.T.`.1XOXW.0X0XqXqXQ.aX$X2X2X2X$X.XqXqXR L.{ + & 9XqX0X0X0XW.W.W.W.T.U.7XJX",
+"JXJXJXnXU.T.R._.2X+X0X0XW.R.S.R.qXqXsX#X,X2X2X<X_.Z H 0X0X0XW.W.W.W.T.U.U.4XJX",
+"JXJXJXZXU.U.T.W.XX2X_.U.S.S.R.qXqXqXqX9XK.) Y 1 X . H.0XW.W.W.W.T.T.U.U.eXJX",
+"JXJXJXJXP.U.T.T.W._.=XXXI.R.0X0XqXqX9X> 1 >X>X:X-XOXoXoX]._.yXJX",
+"JXJXJXJXL U.U.T.T.W.'.1X-XQ.0X0X0XqXqX9XJ 4 . & . G 2X2X2X2X=X=X=X=XgXJX",
+"JXJXJXJXd ' U.U.T.T.W.'.>X>X'.0X0X0X0X0XqXqXE.Q V 2 7 L.V . 5 T.R.(.(.)._./.rXJX",
+"JXJXJXJXp g B.U.U.T.T.W.`.:X2X;XQ.0X0X0X0X0X0X0X0X0X 2 W.W.F.6 > _ U.U.U.I.~ : JX",
+"JXJXJXJXr d v I.U.U.T.T.W.W. X1X1X+XQ.0X0X0X0X0X0X0X$ . J Y.W.W.F.n . 4 S 4 . JX",
+"JXJXJXJXJXd d K U.U.U.T.T.T.W.R.OX2X1XoX`.W.R.U.W.I., X n E B.G._ < U JXJX",
+"JXJXJXJXJXy t d P U.U.U.U.T.T.R.W.(.&X=X=X%X^.A.A.A.5 & S N.I.s.JXJX",
+"JXJXJXJXJXr t t d I U.U.U.U.U.T.T.U.A./.&X=X=X=X%X/.A A D.D.wXJXJXJX",
+"JXJXJXJXJXJXy t t t ` I.U.U.U.U.U.T.U.I.U.~.}.=X=X2X&X# ~ D.G.p.JXJXJX",
+"JXJXJXJXJXJXJXu t t d ` I.I.U.U.U.U.U.U.U.U.U.D.).XX-Xn. > D.D.c.JXJXJXJX",
+"JXJXJXJXJXJXJXr t t t t P I.I.I.U.U.U.U.U.U.U.U./ V + . B !./.J.JXJXJXJXJX",
+"JXJXJXJXJXJXJXJXy t t t t M P.I.I.I.I.U.U.m.C @ > A 3 @ D {.=X=X*Xh.JXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJX0 8 8 t t h M.D.D.M.A & & A M.~ & < Z.D.D.D.~.V.JXJXJXJXJXJX",
+"JXJXJXJXJXJXJX * t t 0 2 % + B ! F 6 @ 5 Z.D.D.D.I.j.JXJXJXJXJXJXJX",
+"JXJXJXJXJX o ; Y Z.A . B D.D.D.D.P.x.JXJXJXJXJXJXJXJX",
+"JXJX * 8 t t q O X < B T ~ ! ~ ( N.D.D.D.D.J.a.JXJXJXJXJXJXJXJXJX",
+"JXJXJX y t t 8 o : A b.D.D.D.D.D.D.D.D.D.D.D.I.wXl JXJXJXJXJXJXJXJXJXJX",
+"JXJXJX e r y t t t t t p N Q Z.D.D.D.D.D.D.D.I.wX6.JXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJX JXJXJXe r y t t t t t t p N ^ Z.D.I.6Xv.b JXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJX JXJXJXJXJXJXJXJXe e r w y y y y y x s.z e JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJX JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXe JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJX JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX",
+"JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX"
+};
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d35bdf23773a247dc167e8449d5a00927912d330
GIT binary patch
literal 25214
zc%1Eg2V9g_*7reR3PnH!M1?`6_i4<~qz|BgG?8A1B31+yMWcv@Q7o|n_SjoQg91v5
ziKdW^#uSsR*<^jQ*=+JAG0ASSF<JF|=RPw7BUs`l`~BYU_q|t-cb<FCz2|?=J@?%9
zJOUVj5CQ|ODK>#B9>6vLaB<N-e=!W;E~QypYo9%h06rH2@dG^z;K*=*;pU8A_bdSD
za%BA4=PFZx!tr{37dYYu@T!NNpPq?tcCwz|1*%K{><a-r2?G^@VgODq3(K|9eZq3?
zFDzfKjo2TSME_j4aDh^g`wNKLi2Y$n>>q=`cjyn+hUrHA0UQk3tu^}4VvssF+Nebz
zn)~aii8O(z`kodI_qTDNerszRBV|i-OLKEiOLL>X5+jG&g|)RpO+#~wroOF3&t4oU
zVC8LED5IyRWi?-$Yy!ojC|M&O)vc+oZ_sSh@ehjxTTM@WPm@u7cTZ3KX<ahUgy&$b
ztnX>i)YvStvDutDSDQXJk}s_p)x&BK8##!Lj03e`OnA~-sZo7TPfvq&y=FtB%|flz
zVKKF}wKcY@7fm}mij=USW`wR9X|1ALYGh+=L+lz&Pm=>Dz{EpA$+cp>rrB20@~>OB
zG&X@;^~5f%?Y1K|I%qa9bp|p4CKIR@Mfd4Znirc#X<BY+UVKrkVD&Jm-Q70znp;hy
zi2p^6rbbH1byU0ZT&-BsqR}{zGHz)!;#v}1M%8!LcH7+Apy_d-RN}W$P`ZOMw4t`U
zmZ03aWy4Zi{$<-s=?sgawjq^4X^dd)YUHzeNTzg$LLqLs)zk71TSC)fBdrYt0g3Hi
z7+PDyuxM;Z5n_IA_gpY<Xiz9R7xs4BQWecMMm9D!)Xce{ky4`+olUi3hn^m>gF-B=
zt!<$CdsuRJceheOoVK-1wF?!YwY75vEe({<sJ2!<p|*jTLMdmi`7OpxvK2~2?Lwu3
zelZ>pP(9~rNzDpHS;d0ViUkW4EP$Y;i7HpfWg}fHic3{0o~yc|!rlSMNU7$z(Izg@
zJe9hVr&gCns#HMrwA9uvP}P;HOkB%U>WUb(YXuY+Q#uKlt9DmaRK!z7@#>0bP{nfm
zO|>eu+O4>xf~Tr0E{)FQrN>aWkbpW$Q&*@eqSd7pD%CKxYca3_Ju;JFk;5XX+F>eH
zj9RTO=FFs}r71d+XX55wk)>Y1R~MHQS8B~u)8i5yS<Ex3t5CU8<f=~9jS4|yaj`w9
zOQY3l9u%wi1A|emc8P`x^}J$N%9v{~NO{q*t|s$TCc{)&_qqU8akM>8H7twAzb73`
zU1cU}mq>Lb3=Va!uElk8ha~^XKt5<WIk<jbgm@RU&o^{2Xyd!O_!h;+6o03SZ!pvp
zU!d5E;^h>JwC;|@tQbqz$G1Vtua8-Ete(L!tDebwRD5Gld|^<$+%PsC8iNkUa>Lka
zAikh$#|>S~$&JwAU#4p>YV~1+TK(`*t1m0g$1jHnF8<C)=kw7pX7h{-Q6vn^GcfEy
zy|w%|&oeb6(gHKAYx?IA{=$Xzie{xk`!qL_oI+1ai$?3It&NP0G@1rYeFOJg$8Tz`
zX=u^3^)$}qv_;On+kwp+r@6w>Q9aEXv9h&i5m(xTFD9S8n%s#EV>cOAtFUQa-7;;1
zM$FBuWeRDHjZGlA=%4IaKJ(5Fni}SSZK-y?w6;O4(I}X!ww((mQgUbx?3w(WcrFZM
zPMCc2B4U5hHW2vaiWH+>)HE_z>Tn906rHWz#N4FRXik&gBd6LerTR2B%F_;tK<Fm7
z({tLP=d{AcL7@l~v?!F_iiJ{}4Cd(?=9;(Eb~ZGGF610vLv5gdxkrWlyafv?Dk~L=
zxtbnwx#SI0u5QsPRV0|VER<IitC?d`yMmhe!8+H9^op!<8lGww=KrFj)78br6)Lr>
z>s;n$A|oStYBqSwi<!DKT|AzNM}^9M7*E$XDsm<&84Y@UU#VS(sZ4n4{=v?VjwEMh
zIQAEoEWE$vXzhTrQzIIy%v6oYM2*Rg`HYy^k_j6#x<Pq{bisg@8xU1%yj)9sMwD+w
z<waC?1eyIZyg?>^+lsSvX6MX^T)<#Gb$_VvTkV|IE^=m`^*zl^Bux{n>3IsEq@~%`
zhRm+kVRL<RAW)|_(M(TsrE>Kxje@UGC^gC^g)vQ1O*DB4X!c{1T1!Js`GWbiku3{p
z%5pa;7M$VnRH|sI-j!GE!a9y`;u>$DXVChv@0d>_|8l`dOUvP2;<U%oiRT9MgI3!9
zxp&<u&{irmP>rq}3-*>{!O_YQq+?A$DKY`~kv8CIX9I4Ib|7)%fzpK!QZF6^`|u#d
z%@U+O<`Cv5fbc*8$i~}1n1?Nh{l`GC_ZZ-t`ojowS}21QhM6eAL>LO@=3!uC9Si~E
z$ALV=6(;$aLPC%briBO~#&-n71~@{ZY$T+II>Kb78^nkBL1x%^kVMHKCDIIX<IJHb
z%>vTmoS-mu43tf>fT~OjC{3}0@@aOE81Dl)(e6-K-~~C8!=WU{1&Sw2pdup}@}~zw
zX_*@s8OMXU73mvNz}zMltn3oO%qanEMnr?t*ch<3p9D6J$>8KX8HO3B0na=O%q+6O
z%po7FZ3|(zXBs$q<bjv>RFKQFK<HEgHg?4@(y<II$CZMWPX*Yxmx7(k3>Z718b*c8
z1Sj7GFfx2DjPslW<0KW}C0PKzL5sm(*#MzQDhNo6f#9@6kmh89tS}dxV&{NU%1jVt
z*MU#eeDIH346a#=AfTcYBxR+bsHg^cbv1;}Ed$r$2Jk9b3jT8zL%@<{5W1iN;v?gr
zATt?C(_>+JW)#dTN`lN8@sM3N3DW0hLtRNS%q~s?by*SAlw?4B{0vA)m<a_1OCg!o
zM6p%VA#ZvaOkP|8)1Fuc^Jc1H){Husw_qMTv3Nc-&Mkr!^GadmqB+pgFcT7+>cBf<
zB}l`UgYA?xV3)IjFs}xA<O-0btbp)It3i>`3_<BzA!OQCh$w1@v2(V7`}9@dS=S8y
z^^M@&unr`Pn!#u3Mu<*b4{@1KK~jDzL@#NCsM2i^SGfby%XUF|c@xBxAA;-|`ypli
zQ7D{u1kxKiAi1s+rY`G*k_E@1a>;3styl+st2Tq*>TM9Pz73=;+d#RY6=dt$A#`&a
zI5nOG_m#&Xp#21hw;lw=jzbW-V?RiCo`B$8$H8ygDe!4O1%bPtg|K}`Az<$rP#o=n
z*wrf_y>S(&Hm-)4b=x6odpoFCw?O2ceUP=H3uZQ*g*naVpthwK;`eug&+$Hxp1cUs
zGjD?L+4n%&^9~fQy9mV_UxAADE6}j@62<RA^`7^j?&N1sf96YQICm44KKDITzxFXK
ze&rgduH1y&tKUHW#|U-reGL_#+=hi8{R5`oKv?kUUD(jl3@ckS@Z`R?Ky&bISa<9i
zY<c!0*!99^@btwm;m{l3z>zm^!m+o$gX35K4yWG#Cp`P%Eol5J!c$-1kbUDlVcGq{
zgFUUIL-f!v(Z2Bk?B7Pkd^R+EY=1xAHFa*b)^_%v4&{GlD8Ht5437mP`;Uh5w+-PR
zZQma%hp>Mdo^&sFv(3nf9lDTf|Mp=1%0bo3jE(Ia{-UoeCVWr}-nKt>54)?ev9Xc;
z$NKD#>~rra@NsDDJ?!I%-I#B`t)JnreYgRnHv7mSwHuGvGs!?Ne~PiM+`c6<E`HjU
zBQf^L_pr}r>>m5N_Ku1fK=Em1NL*abf!5TxxR9MI4B6K)_L8oyo}P01$v5=;e~ynk
z`paz!KNf_f&22W|w;=ZEU0hJxk2><%pHH<P|I>e^#{c8CE}V?ZE*xNAqGdnNh20Sj
z1cM9j-R=)t<7O}I=NB3aONqPZ+_`f-`(D``7k~2aw|;mxZtDR1?SICl&(O0!VJs}^
z={kRog%{s{F0SB5#_^AkP6Phi1*)#qI(`>nVNVaS_nbT5cm4f@#9JK0J8^$E<Ubg)
zuSv&mGL}}utn!Q3ulLOk`9#ZbBJM{+{*!ULpVqRkwRoD?d(QQK@W&5&FK5O5qGk9*
zUr-xb<IbMtb`c<%$yNW-_3JNPzH%icN5}AE+zCVe%#=&7KFRSHcXjnLcB=f!mCOD7
zw^LJZ4X}R_vgwb1yv*^R>FPay?&2R`>FT{gp&!rfPvZ9Xv)@XLzx3*>hd6%H{JFmC
zFR;!f{y77%4}=`hmHi<zZdcd&o_UP@ze)2KufKZba&Iq_@KR#pPdffzrpBed^TX|1
z-ye;OtD;J^{9lu1uJ>JLSgySE!S(CU>-y{V?PufCRB>b*A#o{Z&Ry=+^541BbN+)5
zdap3>#Qnk5D^*&1crPy`qxbTjs;sOzPhTeC=X$yhar|9<A6%j8d;6|mzjpP?)hk!d
zBrt;uiL1Jz4NNxi_n!L$W509pdT(#<mDfJJ{@PV8o0XVTR`ql*_miXEUQWPU96y1-
ze5LRD2UiTj)j=^8A^YOs-1*!2-YXw`sI8{EyJprRr7}1;(4RtJpgdTrtY5rp!y9iB
zhBF-hSKpkw-1i}IcXdrK8f$50=IQA_5d5@3B=YhRucZC-ojYINx%L`kf3x1o%*x7)
z1us^&mR(yyL<K}nO#64f`RdMJ-+%4O<y8Tc?(gO4?@1E8{q-gM`~m}sS?DAZjo0$u
zymRyV<trQf`~p~Q6uiB?b+vP){QR7(jfJ}EiT|5B-+a;A8_2{O;MSL5=|Z8imq_HU
z9W8|a=2zENiM;&0M1KDIB7xrC1Jw(?r~yv;(SGyGJ73;BBoYb*mR434R!lpAo>o>?
zo?02ySjH||-|tOses%M!uf-N-0s*HSD{sc=trwuv=K@1_c=MZY{yN@F%Wh`o+}{RI
zPbX&!3k#~<9R`KFpN}`Qa30PT&^OlG%uFaGfqo*zV0IRKNUV@6pzB}`ote;2)N(&|
z+SQ4?ysSJK7l)neYr^hye{L3nNTtrK2~@z-(#+Y*%g=fJgV`x4oJAH^!>v5Mm>e(B
z_y<5S3=QL*okb!~D`&~WtNu@f|2?;Y|3T+gx_zqQ{fNOnRXo}RB(z7BJDGySSqKt$
z+MAA}y{V^mZ>n$~4$29Z5av&NQ!(vL-L1ja+K=|13NW`&fCUjx7y>-AFfbn;O3z9d
z>m33S;t8OXxqvj-1>*d8ppx)mN}wr3O9e1RVF9X8A*6)UepSwc{7_R!lUqPWm>CpI
zWcycJNEVNTq%hjQ2H8Sp4DDBA%pohm9P%fdLr$a!N@LAHJ=p>((kyA;Y6;ajmQa!{
zg2H%T$j@|z!W<7Mo$L<k6dx$bn*h_(rBIwY5oYIw!j!TQ$SaXUVU+|*O5CBi+#8Ck
z0>O;-vX)knFx)y4ENoR^Zkq(dMadu%MS}g9BrqD53Z}eFYU@-Gn57bB0iW$>hv$I#
zh<q67oCVfysbDvLD%b=Rf~U_k7(x44n=vI|>s0}c<Ep^Hk0@|DI7+I)F?bfZ2312y
zcsY#st^rry8t{}Ygoz2!5R{byvW!#^7iAI^fGD9B#!OiR&N<7#C#x97CC!Jxga(i%
zE&;dPCE%G)RK5TLYUYBXW*$i9Ed=TO29VT00TE9ug}kC7s4a?ysZ}wMIx7wGX}?;p
zo&>WhieO>oG*~ukD$G@9LrU6wm|RQy)<rWRwZ0zes*9m%ZXP^2zXT>WJ^^c*mcXcj
zjSv*KlG~3?Oj-l3xho(vXDx*1uA}|vW^h+Gfj8|%{T8=?WPUS9me787(Hd~8-2{=z
zYaudiJxt2m2FV3&5KDW}xT>9yS+NI}F53<XGxtJP)n3S*eGro79fE?IBT%;R1XMlo
zEXY=_2mj`6;G@|F;x*eq*3t@+^{pUZ*UIfjB^%lxY%}dkH*SZ}E$tBAww?B@2f%OB
zKJeOd6cnvbL)gy!pxk*3T-SC&#J<B2w*NTD_jN+>!A?*f=>plIa}a#$1yHSNgvc#h
zA#z(AMD1vYX-(ab)%ZMQuk3+&YkI-=<YkZ?e+k4LeIP&m3MikYeQD<#AnAG=Wartw
z^d-pCT%x#-_N5o0a>rGu-u*7bop}Q?PF;k;^H-q!`L|&9fsdi~8QosB=NnjZ{#$Op
zTK4jXQ2pj#pyH#Spyq?`Vg85TK?UtmXRv+hUl103hOoB#d2XNDa^yYO()kf=KmRH0
zf8{GU{0Hs+wBy>3{d-f*-w@V+q1~hEd^8LWtFrG22L|V>4t`(|o?2y?*XUqkGW^Kr
z2BF3vcaoirjh&rsi9z;fllybmnb~kP{~`7d1NmD@_1UY9jfWrP(k`q1q|d(Gzj0g1
zc6eEzajE-k_kI3fZ+`IUUusnSwHq6oRG&=Tsx9_WW@>U-esc1(hJkF$g(o{&ZMSeW
z{4wq5t)GAX=kAQzy6iAx%S9(?Yuc8Tkeia6lXB%}F6_yx&=nWfcXV`icJ!`KKmNmy
zd&{)hKmU|k$7QeJEo9lxU41d-2TI<1NSFU}`K)Cu-@THupL_Y*#p1&(b=NU{{)U-V
zEZ>1;Uw!BKzTEFw>akt={M?<}S$;jszS!5N%l}8(58CYO8E?_L7{2T1eE#k8C(rct
zY3u)af7y@JzMub|vF%I;<^Q?kxogk&J=f9m(m8F(TRF*lt{mT(I**z}`G4!Y`g~{K
z8yBv<|LUeRYTxzzytWwyMKezHarwV|@$$vaz6<ZXbD{5zH`?-2lQZYh4?@%T`g5Ix
z@0b6++WE%CcPW>WS;iaMK>3}Ww7C1_>la?Xc&YEX&W?rCm&ULV6%`c{6|wY*C!5!5
z;La~!fAYemzP@Hh3%-EwB;|rcES3ZYxQ!o6@V@=#t5^D7Q-}klzG5elAD1nW1O|>Z
zA3ffK%m4P{*MkBnNX1fJamscRj&>Wzw0HZPZ@*mZ>N>{P*Edis^>d*rSa~zo05>_;
zeZSoN<_k|#Q&S$F?<e*1_4VV*2L=Xs=*{QO%^PEcrhGo%g4He-j~0v;3IZnFGj5y%
z$1nylfpFoQ@=XK$2Mw%HUso4C-<z^c1?GWnYX%QIfMC}#e1WU4Ip5c9`OsW0G=(dJ
zm;8#A;XwGGb?=~Crx+OkG+3v|ocXjqF$1|LAA)`Pw7w94*kc69{T;zo<PSl#)|lWD
z2nkX?L<R~VRxE^gnE(=HW{{{9LgqwsNDH=r+%O?b4YmVClq;k}nL&EA8RW;CLvEru
z6r>PMvVf`SqoHiFC6pywLV1!Ul%`rhWh$*RGIVQ=Y)hDtZwczD4p5%s02Kv}P?X~a
zg-Nuw$P0(;JTYV!NTDRj9cuD}!9$u4uCfvc3a<ibdNjy0^I=?cCAdUZgGban@K7xT
zkCY`4kVJEJWd#J)&4I85OJMTkd`L`N1YSvvpp07u;>6`3Nm>E&Noyb|sRfkDtHD3F
z5hSTi5SqOeBy%(%TiOKDr7OX$W+(X1Z-Z!>Ym*9B!{oeHh|J#!sio^6N4*AOtM|Z^
zs$GyaXAfk~-Ve#OhatJ{D5NfW2FjLofPBSTkUY5=f@p3HS+fyBHnu|8rdCiqwH@SJ
zcEiNh9T2*0Cq(Sp176LCAb96tkhULzpxw_v$gZOhy7w4_KYav34|G7-;SLBnb{3|t
zXwuH7?d=dv{!6`lIaF(&gvj>8Fmq)Wq&)K?EZKSqW*_{Bn*&Q<{TOCn`76x3aT}J=
z9JYN^GpydZ4fb649QMBSH#qRxS8(w4ui^OB@8QJT|A5o)|HRFAY@XZn<wMS4|2O<U
z6AafWlGF?qBDjZ%W&-h2E@ZODVS!7Q<mR!*Y3$L6CttF3X-;%p9JkB&<|h>fO-)an
z(!5F~qi113kvchRWz_1HmM4R0mQE^~J}bJVC2dVh%j(DlFi%~ruA}FMMJ;QxtHPmv
zMtONnO7^OJMMB7=l2BM&KC7m(t~kD6eqCK%$-=cy%$gM@wHxb6!OPbN)-9jqD-w+!
z?dCRKWNki@7DvmhEUX<|>|Mr-Y-~C7O%^7`qsNanHn!0>&fmgxl!-;aeRTl8=e?y1
zSLbrK-`+QmAEaeOJ^umfCi4DIB6oGN8)jrA`@zIid3X58gxkLtS=z?aR4b)klJ5JR
z@mdo}h%$+4h*p@I1bl8gX3E_sp8q@kUR1gLE!5$Ez}pRvg;_|XAeu|G&C|*Df}gYX
zpZ%SOe;?><`HP+9cmyLE)^~pKyWvlne^ie@<~QKxjkX(`ZZ~4w9;cCG-g0%Y|GS5s
zEqdD7pa+rrNNaQ@vbP+|$tqg^^6!RUKBbA(Ny|2=^`nvA7rQr6t$;87QKyGTl7HNy
z-v#^pj?d8CI_8eiF!}rc2JT@*lf0d64$GW{Kk!Zc(aJ6n(;GS-O5-FITpMUV|C{mq
zM9tUhB>vHe@4?O^$|swCGia<SN=BQYwQvF&n<|m^{|}W}f96ZH9+iX^BjPyy{kzzw
zF6-1|-~O1``EJf5OQp_cH{@eYP)yjxV@%M|%8{$DqW#JvWf!h{i5th`rIr6y8%j34
zhGxT~nB9CzGA$nmzvo!n!XOd<YuOkrZauj<+Hv@0DJy;zhN#kQNb>=j+r(m4<Jlqk
z4L#o=tzqv;Tio>(Dl(c`xx0k@CdmtZ9PAUE>{N1*@Kfnn1MKX#{}}YIZ^YrAX`Ehv
zt$!(g>Jr*GCUfm(wj45TD|$z)L_3!mXf!MhdBQAo@?AjVeKkfDwd07<DI71))c=Z+
zkz~|k+Ks2w+2WGS$+RE0gi(|X1Dc+~fYq(&-LMW#grR8dn1qW+SHGqWi_ZQx;aftu
z;)$l9v2hxX_nL!onHw=QL4)>V)Lgoe(G(oUi^s8ZwxDN3#Jhwi@-eU*(O7K_(qU(~
zWzIa5WM^==19c=`(~6?(I!;H99(h>3=e<YbFK>Gng_gNEjP#vewhL)5gS3aahju>q
z7xY&)aP2T3SC0O37NeW9?Lopd{MX=jA8Q*G<jlXtbS`x=LAi*qm#go=En(Esic%t{
zl$kipGzg7(N{p-AflGS7#mXJ;VRBt32BmMsnDRqd(DEAAJ@Z$z8Kp*Z%N$&L^t~at
z4e9g;KVf0b5v~m*!{=f^ROokvKkrxQ-b5-gJ1ZmHjDnm^QCd=b4{nB8MkHTLw2ppL
z>{-{0W=;ttFPL<j%*h=>M%uV;?Q;*sZb<UT6<j&j;s$hg6Lk^3kq^V~BeEjho8Fca
zc7=%AP?&p<zV*0ipUq(x)3eu;L~W<gE@uNb4$UmGv2flI)EsylkGy#kx1RYJ=QN+=
zY(^Ts{8wXV^z_9qktdjnRz4LNP^|uu@Mk{^zuZ~)Y>=}FDjD{?srTqyk6W>xXhSP1
ziNsqEqSx_0bZR`w>DD)BG46ix^C39apLn0kuUvBavG6nUk}N=;)ieyyY(uX=uOrk3
z(+Aj&nNr02o?#D4RcW#7b-r!@JHxHqyaQ!NpF{Dv_t2m4^KJ9c#;zC-zwym|F;q96
z;qb3H{O)7pPs(rQ%K9wbi2hmA{z5p%-4DM+WHBX}um>w$QKH$R#jdk)J?>y4#om)B
zIeQf)-S43CU?;leXnjS)){76skUe8R$Fu8&&mJ3pQSDK#toxkR7*N0B7s5Z~e)xk#
zg5AL$!%_Ogs($Q-IuG8u2c;dakj}4R(1{l@ylpo|Y;DC+A>@Bd((%OG|9BvV`b{r!
z7?!ra^4Rzzl3H+>aViF^+RFKF4_UxQ=HmzB4;JzMB(JU>f}QC+xP2e#{4JE8xs0K^
z4sp06x3zI(=~RHu?z0|>f$5#$XZ`TF_#IuUQ0P>G0qrNyf5$2GD=7K{TT>3vf3oUF
zHdYO7hO?I)hfvb>Hp)-FgcDnL3}A01YHP>gPKA%e&&Y1H8f_g)@bDjQ{%Y*3zgW9%
zr>sH0v)9m<$iH#JUkSg3A$Ipm-&l&9)@%KY0e0E0<5cDy4A^@H1E_8C4SMYD9QLU8
zc61D#^+@|+w5<Jg4oh_E`d@|pVBgnhZCi*u>s<8Pb_xS`KZ}7oPNIKJ{g;F10iWJK
zRWX0Ve5Bsq<$F(|xaU0-?|cRWsa?LSw-J$DJ=Lbez8#~tZ%2=UC664xdWy|>isMyH
z-H1mofBQhbO{e~dE}nC=<F;%?|2)a;BcOWrO~OA~kKOA%9OLuCr$?CGb2d-dgLa?b
z#;M}q8I0JX)p_uyHVoR>hQ3rs5dCJ@qj&7U(CzzC!1>RT2l`Jv9ee9L9OE)wyDo4n
z#o4R6aZBe%c<S0ex%ND{?=5a!WK8{OY?_ASGU_>92CdiXmf44RUOk(~91ZZ#^11lM
zL582x{gyqPy$2ob#fgNy-`;ih63%RA&pr(9cpl~FuA=Pu_tAaj@rTY|j84D*6P7GE
zPIGiBT8%G8zGYVb+QO8dL2J&`{^#MMB9ty!i=i9Ij-S%nLy)cy#Pb%iwUD)5_e9&g
zuiV<f@GHqSBpt7z?3tGddz-;nCG3Pha>p(VdFDLIdan_^iy<A)VZ{DJ7`<~lj?Y*~
zelCsHXG7Ny^VamDmvkYA&BnbH!#8fFe%*#*S~t07)}w=>8b?o@MYgyUWesb%Jf^#_
zO|2NRQ9Bk{A29p@Gv~4KE70N3WB3_K*0$f49q2~ssn;=l>-K)T(fXO~7<%|wl%1n~
z>Ar$t$If8XuH6{DYdc3VI+8DGLGw}h_g%j+dvMEIgi+MiXg%%F5!oUePn?cgwSJlD
zE_`!qe;+WrW;PT!ebzO0o<Nv|L{I7Q2euvmQB3n{=+>P$ar1!PgzY<q@~+FAtxP<8
zQY&xg_956~c58{HDH_+JSIJUzik(CHT}XO<lIq*m&&!p)ZyU6JO^@HO50pCm{zawF
z>2$BuV`t>s`R-Ri`#ZTd_mA0QJ)ErsKhsNk+ckilD3as_ZDuw#fIVi<{V8teR*c=*
zs^xh|8=|%k>Vqx!_5rgW|CE&ZI{Z0$?B4I;9-r5~{zUOqyB0r{Rh)bgWoIwr#JvY-
z%#uA(|AtX4B_AZ)*p7azuC?1RV97EJom+<4b(1iEb~qMQ%dn)}8`UM_up-X^tFo-I
zD$^3HGAyw&-3rSyM`BsFBbMa2U{Sss78dzoPI)M1&6<Si^RqFjp#l?E%*WW(D=>27
zCN2I=TKtmc&Hr+i`H#@yU)-<%Yk1E4>d(*0*R|bcwxc}SgL1+iv11QsmrU0I>)X)(
zN!t5Xlwv?y42r|uQ0iljQcoUAy?7WCB*5f}W;i{|5~okoQI?LTTK2c0DxKPqMwDua
z6)8l?mRO!dG}#i>i56I<GRKk_Ar?mpurQ2=xe>!LEzSuiP4Y!)T=-=JzqyiO_k0((
zlm1_&->re$j(irn=P1g$uHZz5o%u|{uG+X7)2GK_sKg3oo_vgz2{F{4&tX^i@KHwi
zW!^+SJWPo+Bb{4fb+(rJ+hNd#%5*LM$|<@w=<t_Mvc$4@b1aQD<M8K)@-aWe6sHB5
zVxl+g1)YV}2Kbli^naMB%ljIQfoI?Dk(}zo@ZASE8)W!XmR4YCiXEpTHOVMT(#p;w
zIT<l#SdwCasf3x~m-|xNf(4j6*&M5LEVVSa4TgO%#h?$U?qZb%CM$%PBo|<~mnp{k
zn___uf7k@xw|?FNfdT$fo&HZze4OE@_<-M;cYlc3s`dGkR@R|9L8}*rpUJ71qSIZP
z4ojvMTOMI9&$PhmTuYphr=whhHW>E718gWUNQmMIJQR;N#UNKxoT}tuVJP(}wS)GC
zb%tvm!YbC`KTh#!hM%az=i-;IDru}lZ{CE3sbe^s<ob3HeujbJpRU7SJxz<1VV;q%
zqr5?VU}!^w@aM%^pxm8o(v62IF&|5!gjh6@Px|L!_;}u5;NG_l^ld06+Clbzf#Nob
z4-oYRwx9TO;=(GN8YaZT7;`Km{bx)x=SYvgBJIKWt0*o?v%mx@KP}OGU_3uW{}BNK
zl(_M+FqXzI*}ootGU;C7!b=^DU5DR<sLtzM+)wcfYz!0rm%QHm`<|c$i@s&}C9X6s
zNiP!8i^QFW5n=&GO9d$R=3|6JfRl(PAw<aGV|uQjwnQles0`p^ke`;K$ev57JrBZP
zI>`dlNjKS1=47uHSQ@9rpDE*^Qp9h&A9jN_SQ5=4A9{qachT=d^t;>V#m^4LM7aJG
z;V0nQpvTWh>cP|cO`Y!y3*=*YhOQ5EZ782gzA)W_8xuuSEbi|^sV_?iJHyXxv?SgF
z)kMty<c10`)P;W$9`Y6VpmvNSnn~l~2*t-}EFAakxYD5tw!a(Xsnfrk0e+7G{EVVW
z$9msit)u(R0V?t@3Bf`P4-{ZL{SNXXo2UK_AwQfMZqE77f(SE=a5ep}5O;X2^KxA~
z96hgL6!panva2Wk4m|&KgqOuFR(~k<MI8BlW<!JfKt}ddKt71!?8mIbt;aqs&Yb27
z?YzOt>-&@GC5qa^d__(;wQU0bt>E!+-;de;jrI(a%En1zJb9ln|IEhPlyLI*9{eF~
zV3b7ixiPJ`7lS!V>1%+UDBNGb>0Lo>Dx$hGltK(~G2QR&4MX<lzcoa-!N{=j{GK%G
z^O8hM%ppG!PCkQcizmOo9c)~ek-c+vuA?%V<JdfHh+R&Yi)pMfzg$SZGu}sVE7-+!
z*6)pba0qrbiH>yRy_*$ghULlHF*rHIY@i>AqR2nx&^m@2qeRT!^<yTHbeu-(q#_!p
zC4@gIP;e(?oawgT%U*tEFbZ|%<wm&k-k2;A+|8!-0~;Gbr2Am9k%?r>Nug$#M>fI6
zE7w1So$(YA=FDI-RQU>i2pwm-FLWG#$fqp-Hv`jKh_h)~*f`U(u|B-75(4;lQfQ24
z(43G-eU!@9Gc?}gd<8#6dGJ0V-c4anCNU8a_k3mWKPF@X7>7B7W2lp<G*n~~sTA=%
zgC@YQx;y#*DctkD4(Ptu0p0gHEWWLa*~>^qy6<$1bl>S1>%Lpj$9&!QI*<FE&V#<o
zfuZq@LGgt_@$x}2=<2&~Z2W+jKM*h1wS$XA1K;rs`F@9G=)T`EMy=lT-|vXHcWy7h
zGA?E>!anG`9TzS3f9tJ|hX;X0#94v)#E<_S5?V$+`R~Ydb+Q{p6iSrK69oU5IO}Qd
zJ%Gm{b~n#A3-5Xine2U{bPp%n6MoKCUy7Y+Z|x*RTWfzzns?~2-#hS&t^euQzUM@8
zV{L3?-&$BG(ZWK3=6V_)iacQmx&~E0mTdMufrU-%4<tY85pqquoo&|2oCQCdn=3G3
z=H4NCWbeM1Sw%nAJ1`;BT7EGVguYJlhwPaQWb;YSN963De6$Ja*^iTdzxr}kokI&-
z6;|(l_mQ%*SN5O@FPOcb<npk#2RK`F$i|xXzZ)^uI|S{<PkrD!HL;aDm_1=!)lTkR
zjoAl2#;nHYF;8;|YoGayd)Fo~q2VscW_q9WFxmdj!<WhR?+1tkC@v~M|K@EtT$GFv
zMVlYkw#pq>aint=3e7Xol$VL)y=&0XWjc3uEHFz&n}9+b=kER->(__K_9xl5x%U!0
zY}k2n|NXdkT{D`Rg<)vUTC$<9Ihm}j4d-s^-o@!7In%J9<_LCN`?3FQo89R|rmaW8
zh&=SkDn^o@@gVs!k>EA%y#jY@l+-_Q?>+0<R`grkg4S-SXl|Q?wvMG}%Ad-eOIwXB
zLZMj})~$X1f%gNG^0wg!?@IIu3iulv&qHK83w?u}OztY&hofYE19zVxGq^M2?$fs%
z#Zd(tQ8+votDblkx1awM_rLNLrWCg01fQBm-cJb3r=e&00(5h-OBpOb$eDjaIgZwH
zwF|j6>+i(5J7spidEzB>UE7I#s-ykfjeF`&E@;E7s=bfA<MEU&MCY7k=pzrfG+4e;
zWcpoDR*F`({+{fqHVoQ-hP(4n9y)`L%2}8@`{0mzBa_!+*}@Z#lphqg630wggaK2M
zZW+FF5+X7kuavo<boJJOJL%0kQF`h%l%4LwupRrjb6cCSCEPvE;Ch+t$dt8@ly5tx
z4BcusVPL~bW`~}7`N8g1@v;RC19xm&cBAC<8z?_;mXoW$C$Vw5zkGJj#NJ(D@7Fx+
zzEU_MAALLCLcf!5qMN%YLN8yuZ1sAn?v6>(`ZS6=`p|FFKJ?LSLkXqn@AO88%)YPw
z8D&=NL08`z-2K8|hvc;!c@Kx%7NEPjNqbL3w(TVk<UWj}J?vP&Ll-V`dMBMrIxl1B
z&V$I#3B$Iup=3iFhHTxA6ZaiKztsnjZ;?I3{umv9>w6qwSIqeUHr8r1=eaR5F=-9i
zY!<rZF45lgtkaHZ-<XKGI{8(8C;#xgg3_hWyo|xSkKJ>x7QX)&26erOvh(j?@TnKj
zHFpKgIromg#hYKo(c`PoA#gfM7p*~2LM=M@RiUG#8pkEgN5zWu+*v!j>tH&TwroRR
zzX>XmEg;(D+x0=G^yyAi>^rT!*CW{zckf5VvzJi$>_rSebP}U??d-pwkj!sJJI@L<
z6=ZV$$Huu7J@c1f^v?Es?=0B)Jhg$VPj}zKbRd6X6}mf(WcPD&?vCQpS4YLiUgq*y
z+k+3ELHU_CFk;`~{<^~2wsZGWhW9Da6i4l78%Q&}JJFSkY#+Gu3Dey*$miDFCi^!g
z*%i8T?lY3MBR_FEI&d0;k9K23+YSug(vA}H0pjNM7*I2p=AulTQWk=RRT3<&3dG_{
zKP;*6!4kD6mXx?-Y2gGc%^Qa$*&-~?b;rCCIZmyL!PHr4IJveMRf}ii#KtF3Qd06q
zUEi~Nf>w6M9<aCjo#3ZWpz=tU*50?bV@!QDN`qavJ+J=!ft{s?O9WUkRd)|C=={9@
z>^ynk-h!RE6-?Bg_fH8lMVYf%j!yn8qTNL7Z26$<&^b<5sx^&RnB$>6*Vmot=d!zl
zDHa$VBtRAIU-MJU2hPBC7}$A^{{DfTU9vj?l~jn~ggMTS$DP;5xbwd!e>Y4gKV2`M
zXs`eAOP@w=*^2p@t^?=tDFbKP+}V--EI3bhj-5Mj2H$^vs*|4)LF-gEKB^>q%nKLb
zG&$)|Bq-AR9g=B5^dwOy(Jt@HKX!*LY4{~QSb!Pf=G=MQv>0>DPq4te1as~_qcT$~
zuYlSgA1=f=(gpiHSbphb3k>$*<5a@H&TNY!1Q_Mc`*85QLvlwGts^=?bkg_SN6#jO
zjl3%ze5UECI|od%;PhQcSh5Jy)Oa(@PBb6V|LojV&F*{>wEdsx%l|v+{l4$mkz6(w
zLWr7(_WK`tp*L1+VIY6t3@q56KX49dV0)D$J6a~-?ylI`89O(PWao|~KUvKGnPmIj
zf7LSt3!lg%Xlim<l2q^uyB~;?3rRM=|12?*<W!{JduNdpChR|hV|tep=Da9#Oz;!@
zjbu-FwB(_I%K0St^54#jHpeMpX54w8UJq&PE-qc$-%}#A=}MBz&MleVvqH`8#(40L
zP#wSdd?Z+8nmj2`@L?9okEXHD&KKEPSn5PG%vG6Vn7{UXERSq8Jy>`<&YO3R<a+&9
zxq}1MIVRl2bY`qK|71b{zb{!TyfIlK_$a}j|8leke;?&%5Sjnpa{p5Sb^j*_J7-{L
zE$n>dHh>Y4@h#o=y5HUVy)JiFp{M0A<p1|HG9Y&H(f{r4E&aE<7ubI{Vtk+Pc3rp%
zA|LbQkLEE4JLlAoe530=^o?Hd?qISLWxRU7aw3uJ%?U1n=qmC@S6Rt@_f%|u<Lp=R
zoMAbsv$>VnNqEOYnvb&&e#B97-BC<k^vwO<?f-K4$b=AmS+WhD)QNXT>@fnzMOWgS
zLm&0?Cf6QDapH0eN@_v*q&4UfH4p7Y35)NM?Zoes`#Yj^=}MG5xfxv|t1-5E4@Tzi
z#L(=m7)|@EgRg&$dtdq+Dw9{EXJY!d?0poSY_A|%W6M^o<<?+9TlSz^%}$(BwF~!L
z_#BmStL}Nv?Z9hap-0LR^zd`%{(}Xj=ZHqx(kAV`VCP{B-FpnhNh|vKC+D?t?`HR}
z2d{pQUP+DUo1Wgw%FC)}TvI%?9i{C@P)_S>Hpfeo2g)zmdI@K)?CO6XDs$F;^lCnY
z0ki79C4V?xvgzq>f_6W{y=NHOx)Vc=okjooZ8&w#ey+V`%R10QMSG{zCJacTHO3qb
zx89Q$7JSFv2MOGJ_Il_x($j$s3_IL`5xe$q>#2}68__?v5fx4AwCg9`+KGEVht^Ay
zyqt4vj`Zt%=Y^2nM=|{ABN$XS2c_xJsEBgKsp+G!qG$|O<d4Gg90ycSb-<z=H_Xlx
z<CMH`49rN4q4JGhZ~yCvV#nd1vkRo$yk17@lR}y!+1$zIaW<!N>j#=UCo9b`LCVL;
zethmokjne8J7nK;*E<qrX574zpcG<yv>BGASzt<(8J47K?`6tp&5=3L9CO2jcOxd4
ziuATa<xSZf7m_=rEjCbiSHad&G^gb1=FWVYFWLQ>oYJN!%x<f^c@KQ2KGKcno+K0A
zh?Q#Z>+)%B#Qbr*OmKIKTzENboawK+FCm+>q`Kl0{RK-VPT+;p^N@Wx3(POEGu<1Y
W`(_meeXnX548C3cj-3&c2L2Cxc2$M|
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..334120b29d212ed7c87310823e569ee9afd4c594
GIT binary patch
literal 25214
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
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7803876313ad8e15ffa9a1715d186206e5abc333
GIT binary patch
literal 25214
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
JV#M_9{{aL(sHOk_
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/Makefile.in
@@ -0,0 +1,56 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Branding Makefile for nightlies/unofficial branding
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+export::
+ $(NSINSTALL) -D $(DIST)/branding
+ifeq ($(OS_ARCH),WINNT)
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/instantbird.ico
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/app.ico
+ cp $(srcdir)/branding.nsi $(DIST)/branding/branding.nsi
+ cp $(srcdir)/wizHeader.bmp $(DIST)/branding/wizHeader.bmp
+ cp $(srcdir)/wizHeaderRTL.bmp $(DIST)/branding/wizHeaderRTL.bmp
+ cp $(srcdir)/wizWatermark.bmp $(DIST)/branding/wizWatermark.bmp
+endif
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+ cp $(srcdir)/instantbird.icns $(DIST)/branding/instantbird.icns
+ cp $(srcdir)/dsstore $(DIST)/branding/dsstore
+ cp $(srcdir)/background.png $(DIST)/branding/background.png
+ cp $(srcdir)/disk.icns $(DIST)/branding/disk.icns
+# cp $(srcdir)/license.r $(DIST)/branding/license.r
+endif
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ cp $(srcdir)/mozicon128.png $(DIST)/branding/mozicon128.png
+ cp $(srcdir)/mozicon16.xpm $(DIST)/branding/mozicon16.xpm
+ cp $(srcdir)/mozicon50.xpm $(DIST)/branding/mozicon50.xpm
+ cp $(srcdir)/default16.png $(DIST)/branding/default16.png
+endif
+
+# Now sort out the branding specific icons
+ifeq ($(OS_ARCH),WINNT)
+ cp $(srcdir)/windows/blistWindow.ico $(DIST)/branding/blistWindow.ico
+ cp $(srcdir)/windows/convWindow.ico $(DIST)/branding/convWindow.ico
+ cp $(srcdir)/windows/default.ico $(DIST)/branding/default.ico
+endif
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ cp $(srcdir)/gtk/blistWindow.png $(DIST)/branding/blistWindow.png
+ cp $(srcdir)/gtk/blistWindow16.png $(DIST)/branding/blistWindow16.png
+ cp $(srcdir)/gtk/blistWindow48.png $(DIST)/branding/blistWindow48.png
+ cp $(srcdir)/gtk/convWindow.png $(DIST)/branding/convWindow.png
+ cp $(srcdir)/gtk/convWindow16.png $(DIST)/branding/convWindow16.png
+ cp $(srcdir)/gtk/convWindow48.png $(DIST)/branding/convWindow48.png
+ cp $(srcdir)/gtk/default.png $(DIST)/branding/default.png
+ cp $(srcdir)/gtk/default16.png $(DIST)/branding/default16.png
+ cp $(srcdir)/gtk/default48.png $(DIST)/branding/default48.png
+endif
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e52f31d051010215470ae91fc84a6d29d8645efa
GIT binary patch
literal 1143
zc%17D@N?(olHy`uVBq!ia0y~yV4MKNIvh+uk)*3dQyCao>^xl@Ln`LHxx&cHz`$`p
zA^rckS&yY#68IF7*cF^29NIQC@FX%y9%3?TVNK!SJ|Q4BK~YD+nS2RZb^!_u=wWAI
z`2Qd1T27!B8W#Lte_QYcM=NU%2lovDu?>nk3C<A*fXa9i8Kn;~nY9eC1k0#nM;$vX
f9ox$QQpU{S^vQqmo7HMxfLsPoS3j3^P6<r_lQ?mb
new file mode 100755
--- /dev/null
+++ b/im/branding/nightly/branding.nsi
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# NSIS defines for nightly builds.
+
+# BrandFullNameInternal is used for some registry and file system values that
+# should not contain release that may be in the BrandFullName (e.g. Beta 1, etc.)
+!define BrandFullNameInternal "Instantbird"
+!define CompanyName "Instantbird"
+!define URLInfoAbout "http://www.instantbird.com/"
+!define URLUpdateInfo "http://www.instantbird.com/"
+
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/configure.sh
@@ -0,0 +1,5 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+MOZ_APP_DISPLAYNAME=Instantbird
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5df30c77fd5f82a1de8fe54f7ddb00bf48006669
GIT binary patch
literal 15182
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
Y;)&n8S)hKyC<6SUs;H#^ma~ZXKZXj@i~s-t
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..94d9124a3500e9b495b89a6a20d92085f53444d8
GIT binary patch
literal 764
zc%17D@N?(olHy`uVBq!ia0y~yVAKJ!jX2nV<g;tfw15;#x}&cn1H<|g=B!;Wfqcml
z*NBqf{Irtt#G+IN$CUh}R0Yr6#Prml)Wnp^!jq{s3=B+to-U3d6}OW9{Qqx%SVMw!
zae@dBD}#W8&tgXdF1Ldk5?Txj4Q||P0zte9j0}t>Q3<_GKwcXU1IL1kOxYqmKwb)i
z14FM^1W<ENlOi(%Q^uA9QedMbfkrK6y#_Y;1VaOZl<o$Qp{&kq3@ifN0>=Gp5KA?H
za!HMk0wH#O!DFXFK;ls=DITy@3mMR?TENtuYa#)$fsujbLIyXI`?eujz2ZQUJZ~G=
zf&gGxn%p{s<X&BB`IbpELT2$nh@ZGXeu_rc)M^TrFhck2EmaxpZo%nD6bT%meIcU}
zhkYns^wvPqfg|)Tya@e@!ynN&LPaOQ2CRs+Sq_g=*cdDrS=LMPcuxl=Uj|QCKbLh*
G2~7Z!QPtW2
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b87eacc68fa007931056e9604eae39f48c5874ea
GIT binary patch
literal 34759
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
ReUbnG002ovPDHLkV1gox9;g5S
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..37a25b24f28233b6812f9e2e03ce73400ef18bfc
GIT binary patch
literal 6661
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
P00000NkvXXu0mjfAMoz!
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..09dcf2a708548e619042d9fdbbc75ed7ad338052
GIT binary patch
literal 932
zc$@*G16%xwP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H110hL7K~y-6jg!w$Ty+%1Ki|iDGehSM^NSfQogzO31zRntqD~c?
zxG*u0YN8PrlE!KvF)U16;L^muz_?I1E^L~*XhM|6#0K3!Q|b>$DnTS*VJKl*XC5=d
z49u4|@47Hfy3oX%oaE*#&P~oeM~Mjkca&0QZ*T9^et!G2TiHV88r0Ok3ADAfy%h`w
zM_kwKTVG#~d!DxmEDj9~b=PXO{^8Td`S9b*ukI8IR}hgpK6uvd>Fevekxr*2olZ-4
zceel%jYb8K(a})}27?lbL?oF^&WH#~CTRpl%7>hI`TLFwd;XSityaTv9CEoFKA#WU
zw%Od=L@9;V8l}{JI2>+u9A_7qWK1TxH2oUuiHI$Jzh7dpm;eHZ&*!V}_rtQRPelX+
z=-Me0Dj(7@{^%ZEp(?vhzV3(C8r!x>rBe9){yOiu?pTLX51GK$n#1$ODhwWnt|%0$
zuw8<Z{`*|AC4@g<@#ET2Vl63-9gR@UWm#F;xNZUqI~Da_*e|R(P_Bikc?JWm4)@C7
z0S)Rdv0#jBBFXDxuW;k)cXal*;d*Y+0OtQZFdM33q0I!XFTR879Avv3;+K3o>-4ix
zv=J0Xi~|<u<|&s;%q{%E%39V^BEra%EtiJd58l`)HgWdN3sjsOi?j0tx}TuQba|||
zh07POv394(t=$8(2q;CdSe!KgZsvklHoYW0$tvG|@g<q%Rq{n)VBldQjf$UsxJhq&
z6orQ!i_x4&5Rb<(3}Z@(2udmI^r@5i^L^TGHcDjnAD~*P(BwPhu)#(fL6%nYq#o%+
z?^p1&rs(9^THU%`k8&s!I&<ckr)P&!yF?G}5)YdgN}-fu`qu`|jla#$Gqa3O470uR
zJ6~O#p-`wS8~^;ZR4UCaE&ulUH+N#>!aZ0%KbFtJv`mgP26+6`gAAQ}ijUs^gsW56
znV5J9(`?Y@{Uyp|GGmEEVmg~W_VtO5HU?WY?TvfXyecd63xoqM=SQETxjBSs8hD;~
z|J6oB<OQwuyM|$$Y{K1$8^%V$l-mK*2q>juO3|dXd+#sm*JcX;?-SDi0000<MNUMn
GLSTYp0<*CI
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..327a662f196a293449b0851869ed7699a4ce9ded
GIT binary patch
literal 43113
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
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f5079c58c35136c16e717389f0efb550e14db991
GIT binary patch
literal 12292
zc%1E-&ubGw6vy8r5hIOhHI>#1cJZKsWH&9I7K9KZHb_wj?M-O*N0K$kPT1X~;wj+8
zn;=xw|3Q28TI_$|Q9XL_Z}6aRcV^RV+FArru<t`A-<h2^vv1xkGua6Mu*$$%0+<JY
zEC`*Mf<wv5bbyr9upPtpz>TmQER+xLi697qAc%hs6Ouh*-zNy-1QV_giqx{ykx(Y<
zQ&KaDHZxKcsb#4np-kGPq-LaMrOrrIq?V<Qgvv#W$(Ii%@66;I3Y(FtNG<=?kO|^M
zA>Q4UT9=zfci;Q_s~-`O6$7<$?`~CE<Q|wo1t9GLd`gSj+U@oG2IpNSip@=@H14j$
zZ1y6ZaZGn8ZyH(nn_cd<u=F*)GHm;8?qT7YxZ;>CE_;d3A2M;xFs@m^{7o3S+_eoJ
z^u_~=mzB^q5dA_<T<JSzAX<k*h`w<(nX0*d&~O98@vO-x?QUQ1t=xc9m@VXuhS_O(
zeBfGYKN`SqGrPMz_a-igAfHW5*i5N=_X(qz4ZX;%V$HcI|L*$}h?ma-`hPXyzMg2S
zPq>?h%a{ykfC(LFfd?E0;DQAz^if+d4fFU|)G+TufOal^8{nX&1?S<CmgroYj70%v
zwRPSd^lV>C#&cE-FBN@qs}0j}1Mat#mFmQ>cX;U|MjBx2{o_SvuZLnuT~e1-+byou
z)n3C?t={pWe`(wbXU?*Ro@MzR5$Q9^gjL3J{6Iu_hhO<Hj<AR}!)Tx{u=VyiJZrXK
z?#pL5{p~3LzldYmNDf6`^KH-9n_ccX4Oee*$8CDHZVa5R<qut*8;^>KA?e|L_2b5v
z#|>~1qkq_J6rqH(wuEUJlZ|ynSc5v|d(r%=Xw!>kbOE3J)##cN^}w;WHg2&iP{lc|
zM~-XKaZNg|#g1zej%%Ug+Od;U0Hy(4z$oRzxXYzv`iLh>#d06|`xhd3i0O4=A)@`C
zApQ_(A@kvHfICN@{}Tl9AHy=$dbI-M1Hl7?d#!?LBW?h{J_ulmKMd(0fFKBhAP9mW
N2!bF8f*}4rKLKU(9k~Di
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..67ea00f472835f62d140e1519f784324d49f3b6e
GIT binary patch
literal 2272
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9b90db18c95c454b38a6834b4f013d24a56d2991
GIT binary patch
literal 886
zc$@)t1Bv{JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10`o~kK~y-6jgwz!TXhu2KfjxMZ~oky-ZWj(X`4zZ88*&BQDjZP
zKZqi;)y^su#6E0b3qBPD`yhgQ*^>|ML7XV!L#H5uj8YJp2u_(VcDNyKZc$3@8eMXe
zCN<uhdvkn{MP&*e_`>0EIGpq4e3Xdre?uvykB^Uk+^%h(x>#xa_9=ww-v*3~j2yKr
zYd#2qLb+TX=ytoCz=i4Q>3kT5lQZ|^c=hB5PwzAuA0Z+=t=w-PC=?3ki^ZZ8i$%%j
z^8!eJf4=~-u&^MOWl1WPl5946Rzy&;LL8Xi>u~q%XQM}3(LpB+LtNLTTCHN5Cbn&}
zxw(l_3g7opO0^xwx!rZ$I<mr|tZ;hm8OoWIEzxLH(&@AS0*Gmvz5MSo4C74^K?BBi
z_DHsTMi=jDF_!eGyS1JlzVBn(Hp9ciM5EDOJqUtD%Ty^H*t+WSK+}iP5R5v|@?pCL
z^%m%1ie$zhnKp3UIQ-rr6<64L$hWoVD;n_4FKv}g81PdA`b^08!)=B|u{6uer(Wk!
z=`igrj{$8zcH|BsUIa4&K`662aDIDF*Rly=Kv&d#*bShqhFDrY20$h^Lg~mH56wM_
zbcGL3zRT{FHDac=Pve9H>(|qtds+g~V`TfHB;ql;O7-r&_|*mvKK00-&!j1yTzVF-
zGf38o>}UYr?<US%@`ljN7`_%~pRJSYYw-SSZ&RyOsa0+e_?^FuZF_Vy#kuR|X(b{k
zrHqM*iP{qfH2Xg12Ax3o`Z64x9H-L?@j5=97vs5?j?wWute$v-mS2{4uEf&4S579A
zrKzc@bB6|f*etWKG{@k62Y~hU4K9DTg{2uFg4?Qc;pfIDYd`$@n0|AuX0!QaE|+^t
zslxMjDhCiMJ9RcTe#A5*EWbGO4_;PRznDCnb&9vZl*wdf4rWqk(oP@Qq(Q7*=lJpY
zTYwW0mY3f<`(HF7A`kn%|H8d7d3<a%<LR2#G&I#v5Z>&&cCFI<13Q>U0xj8#t^fc4
M07*qoM6N<$g5<WGx&QzG
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b333013e64563a3c4abe54836b7774093714e900
GIT binary patch
literal 3911
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
Vy>QWkhvWbN002ovPDHLkV1lA>dMW?_
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2d06a57a0fefd2de179e9a1322710b78e7346af4
GIT binary patch
literal 1906
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..479e54a2c50a7fb10a1039ff1f43380f9b33ed9d
GIT binary patch
literal 821
zc$@(>1Iqk~P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10<uX&K~y-6jgwz!Q+E`{Kfm<m-nO|RY1+hgO$)U~Ow{5!l^L0W
zdzsKO5e1zZq!0E%U-YR@ick9FU{Bi~9jKrKDNY4x8K|JN8&&sEL{f=b|IGF_=1-fO
zd++f<3_@G<z=1F4@IC*J5)r;slu}wUnY=nbJN?_E*ZJ}-aMe-)Iy*ZD0)fCj$8l2G
zY_{3+yc{sm*VmVDUH9w$Z#p>r%cVW9^7%gzk(v%|Ggqflse9>kTGHvXBoYY$q^YS%
z0Lf%B5(oq&91cq?78?-}lnl`T>?>7SziYH>plGZJxvq<4S<KALpzAuOX_Cw3P)cFj
zHcF}aP$=}3Wm$8`5Q8$rg=>4sM#H8Uh9QwiL;wLq*Yz6yRQ-PcuOfmE=zdiqShVRH
zTwA0&SYghZt<A%>ZA{Z79*<)fM$PUx&R{@SVGVfx#A18FhOO<;6@sD-(?uxQAOf-0
zAiCklvKnBaO1ME`YAz3FjguPi@0)pbywNW_%|lBAJSZet_gydU#|0^<^VJarJn<0k
zgF|jl9Mgb%(<RLpYZRI_#heYvjXeyUI`P@NsGdAmr*TG{>l<4C-k+Gy7(O9ZFT4~N
zsgyZ?@y4>`%>JF!iR)<qlkXab|EokYn?i4~0iWj}l@f<`Z(BBiR7yCmlr(^;sj1<c
z!JeYNy4~CydW+||c$G4LTp3+NJhW#=4Qq;b8i0sYgTder_g8GWqv}Jn>n^fT=3w8q
zi!(2jYgoC}4=n%`3Wd8J9UZ?bl{(U!w-~=YzGUg~&Q@ZrO-%gr*vVy|`xiY^G#c%X
zx3mnmwY9M-TF;tBi-`L_g|f}qi>g>feeCd0JGw8NAG!8;^4Zztz7Y}m-nQ+dKA&%W
zbG<j|DE+Upqb}!ixtRlN+JCGpR99Yk`sU~NIYmG}{{p>X00000NkvXXu0mjflSO!<
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fc923ed3f9ccb42397ab312254fcb7baf1f820e9
GIT binary patch
literal 3181
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
TY?>hD00000NkvXXu0mjf<@X&~
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..abc6fbf0b3e6ff3463cb6a743e077db47c4f6f7b
GIT binary patch
literal 2490
zc$@*c2}SmaP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm0004c0004c0W!JB`~Uy|8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H12{%bZK~z|UwU>KvRMj2FKj+@NyLa>0WOtKI0?8r}9!f%Z6aqFD
zVGv(Ks}9u}AJ`d1)Xu1790f<m7HoCeGFGYBVtr6i>Nq|Moub&PsmLfYP^=_T9&z*7
zB;>KXNp|nu-FxrpAB!s(Vek)sGv7b%Irsd&-}C#O`TfojQcAv06G8-m01%N<W&nDH
zs6GlS4uKyj<@W}_KYjZ2p^Y0i%0-J7MOTI0OS14}58U|y1f`US?-BtagaRz|`FuYu
zDJf~vG_9()w>MxIMh55wI)Poln?UD+1q(h|ym;|UUDvswwua!=hvjen)8F)tVeHNO
zJQo2%2zPmT`7eAv-&&u~SE}ne0IjX9#N+XAUE}xr<M-cxe`zEVp}D!4)vH%itO=fa
zZfmrsr)NrccX#TX1PCE64Tr;9$B!RhA%w_}ODRtipePEC<K*Y>y6Y~o*(`?+9pccT
zLkJ;QxpF0nqOfh-wo7BN*lqxA4C6YX0aZvYxctq+#r5^|_xXH2aq2HpN`w$7ijp6z
zuC7K=6e5ubUa$8w@?<gzz~;@HQB`#)7z`%9TKBbpb)pE#Whg8HDqd`LRSg!O-{kXn
zICbZ?ZKEg(>2#V{ECztb<H2zps;a7p#bP9rN%rsGPfJTnp8RB#j#gGy-qhXQy)PeO
zDJ85EQ-S*s_;FD7M$xZ*r~I<>CQrpM40K&bQ53qmx`;#~ghC-q(<G5dFk!+3LZJ}d
z-QB3FN>5J@mSv%;Dz<HZGo5KEWxbU0$k!2ACqlp-KnNHd%22)Y7>hGDM59qUJ39#m
zgG`=0nP@bMl#;%_zP!_DG)gL!qQAfYG_r4!pG=)cQIuvOL|95`0Vu!{pag*p$iw~A
zhl^2zPCxDK?O2vYe}6v*4jdqp$&7KD&1T1tpUoV{sdBkoYx8LV#vzaZ$K#Zk78L@x
zxgO?Lg2*kxG|h7&C@CqSva<5DbMsBJZTkTsg!d}}0UXjuye$KqKVU$uA4)xNO9QOC
z5av`uvHR@A6DLk26bj+>da0?Yp}M;IY*FwQ==$yRgz#v<5d@7=V%QF~aT62))63vk
z462La)`r}|m<f>tbd5kN3%1O`aiFHc!CP3K`<5xjkJl+M0#uY1Q(9a|kz2#-QYg?>
zbhqG(|F!?#<?=OYz(Js~a|EZN5Z8$m3>mr5&#HjvC`3oVk>J;Jm{l=$S6=T4ii?f>
zx0I4U9fuz+YUIubS5e{xdw2kQc#!A+_!{-sU8sDr_X|Y<S^zViRtk^Dp{@)x1qKZ`
z&<idlHx@ccex}SChCwo!Jhc%~6|UrlH7nWl;N!fu<yA7nF*f~nJ2ex_`SInmQ8d-B
z@Tjza&kS2FN~EFRfSKhvV#|S+6Y#{I0NXzeQCkX)<Ds?`N<7~#;#5;)mI+m*tlh8*
zy+GliHBZsFa0*K<Iv+&{q!59xYU$gijZ4!s`cfJxTV+<If@N!b5-H{0XaB(LWlMPJ
z*kq2!Ra`EG=|P2mwFYQU)-amZ&@>H~%Y_gERaH?{6-C+@Lj#EPD3@F`jfWn%iXSvg
z_*$SMigTs-QQ3XqilT!-FY|57=F1WAV$+tWW>fPEq>U6sUX5#hxrS#S+`x>AIBmTy
zCeEA3tOX4u`g-{I-4F4(MyS`a1WOA5@VF%}Kee5aSd5;oUJ}CwX2!zESfq>$PS!r2
z?*;4MH~+a|S?TH$Ee$|2s}iWHpwtV|zJ44t$$8_7ShnIy_PqHzeO7=?TQ=~>s&%Y?
zVhuOnav2}Ky@yw~zelV?#Z~6VF0}dcKMpW7GJ>P3$Wv-VB9X%9^F5SrXK};+?4AA)
zs+J39f!Bq5_$Y5Y{bKI)8l%|p6D*utL$GEV;Td%lXb!U%*3-Q6J;)?kIDZlwAH9x;
ze||AqcNghYhOEbf$LGUaSV%!ZK^`Z&>4|&<q?E_&>gonRFDnbqD9UxYY2zfjUf#i^
z@m`{lC>tMpg#xdep<$a_AGs079Oa7T3s`^mMrKbB@X`AR`Si063^PNhyok=hG^(oN
z^?FY`oVINvr5pyL%Bd6G-Q91sh-sM8gQjX|s>Z^p4qKl5I}fb8npL+gW%<?f8BL~X
zeq%Rgd<d75W=`W2{`%ZoXkHgL+_Z>$*DPmnID?@VqU(Adfk1$9<HjMS#O-!BcXV{5
zPP-9lnl_=Kq2YLKnMYYs)rDKhb+jW<hvM<mx&FpQq*7@f`}HdXJSK^ZhY3?Ba?Oe#
z;ww<u_0D11jtzoPiS!O*IAB{Awq+v(xOE-NviUL+A?Q}0*Ua>`F;}u+F!<KYnKLh)
zSmN-LvIv^U&F^iqnA<duci-Me<5ZPUz>V(F8AxQ<*P0|ySwWH_JXK+umM)~}l15}Y
ziDTwq8>6I05@bda#7+#ddGl^!@#N0aQUG9C*6OylHggC+{~oOcRYTQOnr3)tKe&%8
z=j)XFT}UZOXVUnKRF=*uWJ>7}U0nm*{pcG0`_Tbj-|{ycGlfj&AhHH-vLps#ys)*I
z8-8{%9=8@BBOsATL`>6M)7si9Pf*6L(HR(c(NvY0lMB&Q6;;VWAo3TF;sQ6mVi#Uj
za_c?UGcq#5Uw-!j&Pf4|nd0EbExfdS54YU5lo?a2uq@jiBLE;4i#^@f*Z0if!-wUF
z>SvcRi(VPXSGY4lQx#-7g-d3+?uMn5kMr~RubwBH8e!*aAF%&mJGbAljH+@UQgUVi
z0P%Qybx%*vlY92;aWc5rV>NKlt|hDJXB6O|=69@ECRbe2!0g6a)~<O5TY;Nyyoln0
zTocJ=Eu_R8do4f31_lQ1sjRGQ-?3xI!*z9aezmTSPOF9~S~t_xPTaye?SCnh+`&ty
zkY);*F=(0-W=i-f%KU|>%GZ@Jld+Ierp_t=ptra8iEuc)yREHleQRs$^6KhpPv@jb
z9Ia~PJUv0Vh!GMoyqK72izA0Vr@$@IRR^zTqbX1kEE?nYqyXcb--h9E7+|iH@><h0
zugqq%lT}sKbzR4{Z3=~n%N7)QJfl9B+FmSVr!E{rRTPiQrMfjub-P@uOH~!Orm1er
zvI{yo1~z@C$LT3zyg(&T0R&GDCx8K<tD~c1^jv-YAAkdB6%KuE-~a#s07*qoM6N<$
Eg7XTbvj6}9
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..09dcf2a708548e619042d9fdbbc75ed7ad338052
GIT binary patch
literal 932
zc$@*G16%xwP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H110hL7K~y-6jg!w$Ty+%1Ki|iDGehSM^NSfQogzO31zRntqD~c?
zxG*u0YN8PrlE!KvF)U16;L^muz_?I1E^L~*XhM|6#0K3!Q|b>$DnTS*VJKl*XC5=d
z49u4|@47Hfy3oX%oaE*#&P~oeM~Mjkca&0QZ*T9^et!G2TiHV88r0Ok3ADAfy%h`w
zM_kwKTVG#~d!DxmEDj9~b=PXO{^8Td`S9b*ukI8IR}hgpK6uvd>Fevekxr*2olZ-4
zceel%jYb8K(a})}27?lbL?oF^&WH#~CTRpl%7>hI`TLFwd;XSityaTv9CEoFKA#WU
zw%Od=L@9;V8l}{JI2>+u9A_7qWK1TxH2oUuiHI$Jzh7dpm;eHZ&*!V}_rtQRPelX+
z=-Me0Dj(7@{^%ZEp(?vhzV3(C8r!x>rBe9){yOiu?pTLX51GK$n#1$ODhwWnt|%0$
zuw8<Z{`*|AC4@g<@#ET2Vl63-9gR@UWm#F;xNZUqI~Da_*e|R(P_Bikc?JWm4)@C7
z0S)Rdv0#jBBFXDxuW;k)cXal*;d*Y+0OtQZFdM33q0I!XFTR879Avv3;+K3o>-4ix
zv=J0Xi~|<u<|&s;%q{%E%39V^BEra%EtiJd58l`)HgWdN3sjsOi?j0tx}TuQba|||
zh07POv394(t=$8(2q;CdSe!KgZsvklHoYW0$tvG|@g<q%Rq{n)VBldQjf$UsxJhq&
z6orQ!i_x4&5Rb<(3}Z@(2udmI^r@5i^L^TGHcDjnAD~*P(BwPhu)#(fL6%nYq#o%+
z?^p1&rs(9^THU%`k8&s!I&<ckr)P&!yF?G}5)YdgN}-fu`qu`|jla#$Gqa3O470uR
zJ6~O#p-`wS8~^;ZR4UCaE&ulUH+N#>!aZ0%KbFtJv`mgP26+6`gAAQ}ijUs^gsW56
znV5J9(`?Y@{Uyp|GGmEEVmg~W_VtO5HU?WY?TvfXyecd63xoqM=SQETxjBSs8hD;~
z|J6oB<OQwuyM|$$Y{K1$8^%V$l-mK*2q>juO3|dXd+#sm*JcX;?-SDi0000<MNUMn
GLSTYp0<*CI
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5e9c2200ee3553e6fc90aa7345d9fb5805c3f041
GIT binary patch
literal 4463
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
Bh2a1I
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1529369a8f3891324a75d212de077b2b4afc0ee1
GIT binary patch
literal 52510
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
F`CrG6jp_gZ
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a1740b26cf9f1db274b65efacb25dc5e47131c12
GIT binary patch
literal 25214
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
al2R9)fVciuK+B+b*Z&5gNlm_&`o91W$ivzI
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/jar.mn
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+instantbird.jar:
+% content branding %content/branding/
+ content/branding/about-credits.png (content/about-credits.png)
+ content/branding/about-footer.png (content/about-footer.png)
+ content/branding/about.png (content/about.png)
+ content/branding/icon64.png (content/icon64.png)
new file mode 100755
--- /dev/null
+++ b/im/branding/nightly/locales/Makefile.in
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+relativesrcdir = @relativesrcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DEFINES += -DAB_CD=$(AB_CD) -DMOZ_DISTRIBUTION_ID_UNQUOTED=$(MOZ_DISTRIBUTION_ID)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/locales/en-US/brand.dtd
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- nightly branding -->
+
+<!ENTITY brandShortName "Instantbird">
+<!ENTITY brandFullName "Instantbird - Nightly">
+<!ENTITY brandMotto "'Cause geeks can also do magic!">
+<!ENTITY vendorShortName "Instantbird">
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/locales/en-US/brand.properties
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+brandShortName=Instantbird
+brandFullName=Instantbird - Nightly
+vendorShortName=Instantbird
new file mode 100755
--- /dev/null
+++ b/im/branding/nightly/locales/jar.mn
@@ -0,0 +1,10 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+@AB_CD@.jar:
+% locale branding @AB_CD@ %locale/@AB_CD@/branding/
+ locale/@AB_CD@/branding/brand.dtd (%brand.dtd)
+ locale/@AB_CD@/branding/brand.properties (%brand.properties)
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/locales/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/moz.build
@@ -0,0 +1,8 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['locales']
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5f94a95e5048b89b1957d2d86ebf22c43ec4b899
GIT binary patch
literal 16878
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χ({x$I13GHYmR5qTh*=F8u1q%}svD+64=n`Oq
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
bU-!BK7r#1Y+t^fI00000NkvXXu0mjfaq#|@
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/mozicon16.xpm
@@ -0,0 +1,193 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* XPM */
+static char *instantbird___[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 167 2",
+" c black",
+". c #020100",
+"X c #030101",
+"o c #020202",
+"O c gray1",
+"+ c gray2",
+"@ c #060606",
+"# c #070707",
+"$ c #0B0B0B",
+"% c #0C0C0C",
+"& c #15100C",
+"* c #101010",
+"= c #111111",
+"- c gray7",
+"; c #151515",
+": c gray9",
+"> c gray11",
+", c gray12",
+"< c #2A1400",
+"1 c #301E18",
+"2 c #212020",
+"3 c gray13",
+"4 c #232323",
+"5 c #272121",
+"6 c gray14",
+"7 c #252525",
+"8 c gray15",
+"9 c gray16",
+"0 c #2F2F2F",
+"q c #33302D",
+"w c gray20",
+"e c #343434",
+"r c #353535",
+"t c gray22",
+"y c #3A3A3A",
+"u c #46120C",
+"i c #501F15",
+"p c #521E14",
+"a c #4D261A",
+"s c #562217",
+"d c #572318",
+"f c #582418",
+"g c #693200",
+"h c #6A3200",
+"j c #773800",
+"k c #7D3B00",
+"l c #7A3C0F",
+"z c #512E20",
+"x c #5B2F28",
+"c c #423122",
+"v c #553127",
+"b c #543A24",
+"n c #543129",
+"m c #663520",
+"M c #6E3E27",
+"N c #613628",
+"B c #723E29",
+"V c #7F4919",
+"C c #6F432B",
+"Z c #7C4222",
+"A c #794523",
+"S c #74402B",
+"D c #76422C",
+"F c #75452E",
+"G c #78472F",
+"H c #63453C",
+"J c #6F483A",
+"K c #764430",
+"L c #744731",
+"P c #754A31",
+"I c #754B32",
+"U c #774B35",
+"Y c #774C37",
+"T c #794834",
+"R c #474544",
+"E c #464646",
+"W c #494949",
+"Q c #4B4B4B",
+"! c #5B5047",
+"~ c gray37",
+"^ c #714E40",
+"/ c #77574A",
+"( c #7E5E4C",
+") c #8D440F",
+"_ c #914500",
+"` c #964700",
+"' c #984700",
+"] c #9B4900",
+"[ c #994A03",
+"{ c #93470D",
+"} c #924C0E",
+"| c #8A4211",
+" . c #85461C",
+".. c #924B15",
+"X. c #A04C00",
+"o. c #A34F05",
+"O. c #A95000",
+"+. c #AA5000",
+"@. c #AD5200",
+"#. c #A4540E",
+"$. c #BB5800",
+"%. c #A75711",
+"&. c #AB5C15",
+"*. c #AA5C16",
+"=. c #A75C1A",
+"-. c #A4591E",
+";. c #B15E14",
+":. c #834928",
+">. c #914F23",
+",. c #865121",
+"<. c #865224",
+"1. c #8C522F",
+"2. c #935A27",
+"3. c #814D33",
+"4. c #8A5332",
+"5. c #8B5635",
+"6. c #83563A",
+"7. c #86543A",
+"8. c #8D593C",
+"9. c #936134",
+"0. c #B76822",
+"q. c #B96923",
+"w. c #BA6A24",
+"e. c #BF6D24",
+"r. c #BC6E29",
+"t. c #BE6F28",
+"y. c #B97335",
+"u. c #8E6147",
+"i. c #8A634F",
+"p. c #8B644F",
+"a. c #9B6746",
+"s. c #916844",
+"d. c #996A41",
+"f. c #9E6947",
+"g. c #967156",
+"h. c #A06C48",
+"j. c #B07C53",
+"k. c #967C66",
+"l. c #937B69",
+"z. c #A17F65",
+"x. c #B18866",
+"c. c #BB926C",
+"v. c #A78B74",
+"b. c #E79146",
+"n. c #FFA759",
+"m. c #C59F79",
+"M. c #D6A26D",
+"N. c #C5A37F",
+"B. c #CFA87C",
+"V. c #D4A775",
+"C. c #D8A976",
+"Z. c #F8AC67",
+"A. c #FFB36F",
+"S. c #EAB67A",
+"D. c #EEBA7D",
+"F. c #F2BE7F",
+"G. c #FFB97A",
+"H. c #FFBA7D",
+"J. c #FFBB7E",
+"K. c #BDA68B",
+"L. c #C6AC8D",
+"P. c #D6B286",
+"I. c #C9B190",
+"U. c #FFC490",
+"Y. c #F2D09C",
+"T. c #ECD6AA",
+"R. c None",
+/* pixels */
+"R.R.R.R.R.R.R.R.R.R.R.R.9 R.R.R.",
+"R.R.R.R.R.R.8 4 O O + Q W k.R.R.",
+"R.R.R.R.9 y y 7 = ~ $ * : R.",
+"R.G.Z.c t r 6 = : 4 + @ o R.R.",
+"J.n.;.& # - @ @ R.",
+"A.b.O.k < . % > # X R.",
+"H.e.] $.X._ j h g V ,.z H ( U i ",
+"U.%.+.' ) | @.' ` [ &.C L.u.j.P ",
+"R.} o...v.p.{ m L l *.A g.6.I a ",
+"R.b #. .N.c.5.l.z.B.Y n 5 2 3 = ",
+"R., <.&.Z f.T I.x.a.h.v w r e R.",
+"R.R.q 2.=.4.:.>.1.7.x / ^ J N u ",
+"R.R.R.R 9.-.0.q.w.M K.i.Y.C.3.B ",
+"R.R.R.> E s.r.t.t.G T.P.K 8.D.D ",
+"R.R.R.R.R.0 ! d.y.F m.V.M.S.F.S ",
+"R.R.R.R.R.R.R.; : 1 R.R.s d f p "
+};
new file mode 100644
--- /dev/null
+++ b/im/branding/nightly/mozicon50.xpm
@@ -0,0 +1,314 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* XPM */
+static char *instantbird___[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 256 2",
+" c #000000",
+". c #0C0503",
+"X c #0B0B0B",
+"o c #1A0902",
+"O c #141414",
+"+ c #1B1B1B",
+"@ c #1F1515",
+"# c #1C1108",
+"$ c #2A0B0A",
+"% c #350201",
+"& c #3D0B07",
+"* c #380907",
+"= c #371B03",
+"- c #381A00",
+"; c #3E140F",
+": c #231815",
+"> c #381613",
+", c #372414",
+"< c #242424",
+"1 c #2C2C2C",
+"2 c #3A2B2B",
+"3 c #392828",
+"4 c #353535",
+"5 c #3A3A3A",
+"6 c #3E3535",
+"7 c #420E0A",
+"8 c #44120D",
+"9 c #4A160F",
+"0 c #541C0E",
+"q c #451511",
+"w c #481711",
+"e c #4D1B14",
+"r c #461814",
+"t c #501D13",
+"y c #4F270F",
+"u c #552800",
+"i c #5A200C",
+"p c #4B231D",
+"a c #492018",
+"s c #542115",
+"d c #582312",
+"f c #53241B",
+"g c #592519",
+"h c #5B2B1E",
+"j c #572A1D",
+"k c #64280A",
+"l c #702B01",
+"z c #693200",
+"x c #753302",
+"c c #7A3808",
+"v c #632B13",
+"b c #632B18",
+"n c #6C3416",
+"m c #783817",
+"M c #452A28",
+"N c #562C23",
+"B c #5B2D23",
+"V c #5A332A",
+"C c #4B3E3E",
+"Z c #643323",
+"A c #6B3A27",
+"S c #61362A",
+"D c #6C3D2A",
+"F c #693624",
+"G c #723E2A",
+"H c #653D33",
+"J c #534239",
+"K c #6F412E",
+"L c #73462D",
+"P c #79522F",
+"I c #634C38",
+"U c #7C4A33",
+"Y c #744C3A",
+"T c #784A37",
+"R c #6E5137",
+"E c #7C513C",
+"W c #454545",
+"Q c #4C4C4C",
+"! c #484040",
+"~ c #514646",
+"^ c #545353",
+"/ c #5A5A5A",
+"( c #5A524A",
+") c #734F43",
+"_ c #775545",
+"` c #696159",
+"' c #646464",
+"] c #6B6B6A",
+"[ c #727272",
+"{ c #7C726A",
+"} c #8C0000",
+"| c #AE0000",
+" . c #813C01",
+".. c #833907",
+"X. c #E20000",
+"o. c #F80000",
+"O. c #DA2D04",
+"+. c #8C4303",
+"@. c #964700",
+"#. c #974801",
+"$. c #9B4B02",
+"%. c #9D4F09",
+"&. c #90480D",
+"*. c #9F5009",
+"=. c #8C4918",
+"-. c #954C14",
+";. c #8E531E",
+":. c #93541B",
+">. c #9D551B",
+",. c #9D581A",
+"<. c #A44E01",
+"1. c #A14601",
+"2. c #AD5403",
+"3. c #A3530C",
+"4. c #A55105",
+"5. c #B35400",
+"6. c #BD5900",
+"7. c #B85700",
+"8. c #A65710",
+"9. c #AB5C15",
+"0. c #A55A17",
+"q. c #AF6019",
+"w. c #B2631C",
+"e. c #8B563A",
+"r. c #8C5A3C",
+"t. c #855535",
+"y. c #925E3E",
+"u. c #915E31",
+"i. c #8D6037",
+"p. c #97623F",
+"a. c #AC662B",
+"s. c #B66721",
+"d. c #B76925",
+"f. c #BA6B24",
+"g. c #BE6F28",
+"h. c #B56728",
+"j. c #A76D38",
+"k. c #B77337",
+"l. c #C35D00",
+"z. c #C95F00",
+"x. c #CD6100",
+"c. c #D26300",
+"v. c #D36B0F",
+"b. c #D66D10",
+"n. c #C1722B",
+"m. c #815640",
+"M. c #8F5D41",
+"N. c #835E4C",
+"B. c #865C44",
+"V. c #8D654D",
+"C. c #936444",
+"Z. c #9B6D4A",
+"A. c #9A6746",
+"S. c #856B57",
+"D. c #946E53",
+"F. c #977455",
+"G. c #8C7057",
+"H. c #A26E49",
+"J. c #A8754C",
+"K. c #AA7B54",
+"L. c #B37F55",
+"P. c #987866",
+"I. c #EF8323",
+"U. c #FF993E",
+"Y. c #FF973C",
+"T. c #B2865A",
+"R. c #B7875A",
+"E. c #9D8570",
+"W. c #9E856D",
+"Q. c #A5846A",
+"!. c #B88C64",
+"~. c #A78D76",
+"^. c #B1987E",
+"/. c #D68A48",
+"(. c #C78C58",
+"). c #FF9C41",
+"_. c #F39641",
+"`. c #EB9A52",
+"'. c #FFA14D",
+"]. c #FFA555",
+"[. c #FCA659",
+"{. c #FFA95B",
+"}. c #C08F60",
+"|. c #C49262",
+" X c #CB9C69",
+".X c #C99968",
+"XX c #D29F6A",
+"oX c #C29D76",
+"OX c #CFA36D",
+"+X c #D5A46D",
+"@X c #DAA66F",
+"#X c #CCA377",
+"$X c #DDAB73",
+"%X c #D3A776",
+"&X c #DDB07C",
+"*X c #FEAC63",
+"=X c #FFB069",
+"-X c #E2B177",
+";X c #E7B57A",
+":X c #E8B77B",
+">X c #EEBA7D",
+",X c #FFB573",
+"<X c #F2BE7F",
+"1X c #FFB97B",
+"2X c #E8A467",
+"3X c #8B8B8B",
+"4X c #868686",
+"5X c #959595",
+"6X c #9F9F9F",
+"7X c #AE9A83",
+"8X c #B9A186",
+"9X c #B8A991",
+"0X c #BDB398",
+"qX c #AAAAAA",
+"wX c gray63",
+"eX c gray69",
+"rX c #C4A886",
+"tX c #D6AF82",
+"yX c #D8B88A",
+"uX c #D7BE95",
+"iX c #C7B998",
+"pX c #E8BC82",
+"aX c #F6BE82",
+"sX c #CBBEA3",
+"dX c #DBC29B",
+"fX c #EFC68F",
+"gX c #F2C284",
+"hX c #F3C68A",
+"jX c #FFC38D",
+"kX c #F8C68C",
+"lX c #E7C694",
+"zX c #F4CC93",
+"xX c #F5CF98",
+"cX c #FFC490",
+"vX c #F5D29C",
+"bX c #DAC9A7",
+"nX c #DCD2B5",
+"mX c #EDD9AE",
+"MX c #F6D6A2",
+"NX c #F7D9A6",
+"BX c #F7DBA9",
+"VX c #F8DEAD",
+"CX c #E3DCBE",
+"ZX c #E8CFA3",
+"AX c #F9E3B3",
+"SX c #FAE6B8",
+"DX c #FAE9BD",
+"FX c #F3E3BA",
+"GX c #F7EBC3",
+"HX c #FBEEC4",
+"JX c #F4EFCB",
+"KX c #FCF0C7",
+"LX c #FCF3CC",
+"PX c #FBF7D3",
+"IX c #E8E6C6",
+"UX c None",
+/* pixels */
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX| } ",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+ + UXUXUXUXo.X.UXUXUX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX4 ' eX[ X UXo.UXUXUXUXUX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXX + + O UXUXUXUXUX5 6X5 qXqXE.O.UXUXUXUXUXUX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+ 1 4 5 5 + UX1 wX3XQ / qX(.P.X UXUXUXUXUX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO < 5 5 5 5 5 1 X 5X3X] Q O [ 6X5X' . UXUXUXUX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUX< 5 5 5 5 5 5 5 1 / 3X] Q 1 X ^ 5X3XO UXUXUXUX",
+"UXUXUXUXUXUXUXUXUXUXUXUXX 4 5 5 5 5 5 5 5 5 5 + X 4X] Q 1 X < Q O UXUXUXUX",
+"UXUXUXUXUXUXUXUXUX1X2X: 5 5 5 5 5 5 5 5 5 5 5 O 4 1 O ] Q 1 X O UXUXUXUX",
+"UXUXUXUXUXjX=X{.].`., 5 5 5 5 5 5 5 5 5 5 5 < X 1 4 + X W 1 X O UXUXUXUXUX",
+"UXUXUXjX=X'.].'.[.y 5 5 5 5 5 5 5 4 + < 5 4 O < < 4 4 + O X X UXUXUXUXUXUX",
+"UXUXjX*XY.*X).*X:. 5 5 1 4 5 5 5 X . < 4 4 X + X UXUXUXUXUXUX",
+"UXcX*X).*X*XU.n.z X 5 4 X + 5 1 X O + UXUXUXUXUX",
+"UX=X].'.=X'._.#. .. O O 1 X UXUXUXUX",
+"jX=X'.].=X].v.@.@.u UXUXUXUX",
+"1X=X].'.=X`.x.$.@.@.- O X UXUXUX",
+",X=X*XY.=Xq.5.l.#.@.@.z o X 4 4 + UXUXUX",
+",X=X=XU.].#.@.l.l.#.@.@.@.z - o 1 4 + . 4 4 4 X . UXUX",
+"aX=X=X{.I.#.@.$.x.l.$.@.@.@.@.@.@.x u - o . < 4 4 4 4 4 4 X . o > > p N N N j s % UX",
+"jX=X=X=Xb.5.@.@.$.z.c.5.@.@.@.@.@.@.@.@.@.@.@.@.+. .x c ;.:.:.>.,.0.y % ) 9XbXFXSXVXvXzX$Xg L 9 ",
+"UX=X=X=X2.c.$.@.@.#.7.c.z.<.@.@.@.@.@.@.@.@.@.@.@.@.@.#.9.9.9.9.9.9.n N N P.GXDXVXMXzX+Xs K.|.e ",
+"UX1X=X=X#.7.x.$.@.@.@.$.l.c.z.2.$.@.@.@.@.@.@.@.@.@.@.@.%.9.9.9.9.9.-.V IXS.N rXNXxX.Xs T.>XXX8 ",
+"UXUX=X*X$.@.l.x.$.@.@.@.@.<...k c.6.<.@.@.@.@.@.@.@.@.@.@.$.8.9.9.9.9.p LXGXrXS T L.g !.<X<X$X7 ",
+"UXUX,X`.$.@.$.x.x.<.@.@.@.l w * c c.c.c.6.2.$.@.@.@.@.@.@.$.9.9.9.9.9.a HXSXVXlXD.F .X<X<X<X-X7 ",
+"UXUXjX/.%.$.$.<.c.c.<.$.x e sXH _ c 5.l.c.c.1.d x @.$.$.$.*.9.9.9.9.9.e FXVXMXzXhX-X<X<X<X<X>X8 ",
+"UXUXUX/.3.$.$.$.4.x.c.l e CXnXH GXZ .$.%.2.k 8 N.j v c $.$.3.w.q.q.q.a dXNXxXhX<X<X;X+X|.L.H.8 ",
+"UXUXUX!.3.%.%.%.%.3.k _ JXLXbXS SXZXs +.%.%.r 7X) KXuXB.e v &.w.w.w.w.f Y D f 8 * * * * $ $ o UX",
+"UXUXUXUX=.3.3.3.3.3.v 8XKXDXdXS BXMXtX0 %..._ JXN bXAXVXvX!.f p J I R V 3 : @ + + + + + + O X UX",
+"UXUXUXUX, 0.3.3.3.3.%.t mXAXyXB vXzXhXR.i d nXLXW.Y VXMXvXzXgX(.h M ! Q 4 < < < < < < < < O X UX",
+"UXUXUXUXO P 8.8.8.8.8.c m.MXtXB hXgX<X<Xy.N LXHXmXe uXvXzXgX<X<X<XA.% M 1 < < < < < < < < X O UX",
+"UXUXUXUXO ! ;.9.9.9.9.8.0 #X%X7 G y.K..XM.7XHXDXAXD.E zXhX<XXXC.s A 8 4 1 1 1 1 1 1 1 1 1 . UXUX",
+"UXUXUXUXUX< ( 0.9.9.9.9.-.d :XOXR.Z.t.D q GXDXAXBXlXq A.A e F C. X}.a 4 4 4 4 4 4 4 4 5 < X UXUX",
+"UXUXUXUXUXX ^ I 9.9.9.9.9.m e.<X<X<X>X XZ B rXVXMXxXF.C.T.+X-X>X<XF 2 5 5 5 5 5 5 Q ^ Q O O UXUX",
+"UXUXUXUXUXO 4 W L w.w.w.w.q.v R.<X<X<X<Xe.v m b !.hXpX<X<XZ.M.C.r.r 3 3 3 3 2 2 C ~ ~ 6 . UXUXUX",
+"UXUXUXUXUXUXO 5 W P w.w.w.w.9.0 +X<X$XF m g.n.g.=.n H.>X<Xf q ~.9X8X^.~.Q.P.D.V.B.m.T K A b % UX",
+"UXUXUXUXUXUXO + Q Q t.w.w.w.w.>.d H.d >.w.w.g.n.n.g.=.b p.e 9XN sXLXHXDXAXVXNXvXxXzXhXaX@Xg h UX",
+"UXUXUXUXUXUXUXX 1 Q Q u.s.s.s.s.=.m s.s.s.s.s.g.n.n.f.s.=.8 PX0XN 8XDXAXVXNXvXxXzXhXgX|.e Z.A.UX",
+"UXUXUXUXUXUXUXUXX 5 ^ ^ i.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.w PXKXiXV Q.VXNXvXxXzXhXgXJ.9 K.;XA.UX",
+"UXUXUXUXUXUXUXUX+ X Q / / _ d.f.f.f.f.f.f.f.f.f.f.f.f.f.f.w LXHXDXuXH V.vXvXzXhXaXe.t T.:X<Xy.UX",
+"UXUXUXUXUXUXUXUXUXO X Q / / ` a.g.g.g.g.g.g.g.g.g.g.g.g.f.w HXDXAXVXuXY T fXhX:XA A |.>X<X<Xe.UX",
+"UXUXUXUXUXUXUXUXUXUX+ X W ' ' ` j.g.g.g.g.g.g.g.g.g.g.g.f.e DXSXVXBXMXyXB.Z Xg r.+X<X<X<X<Xt.UX",
+"UXUXUXUXUXUXUXUXUXUXUX+ X 5 ' ' ' S.j.n.n.n.n.n.n.n.n.n.d.f SXAXBXMXvXzXpXC.t K.$X<X<X<X<X<XU UX",
+"UXUXUXUXUXUXUXUXUXUXUXUX+ X O Q ] ] ] S.k.n.n.n.n.n.n.n.h.N AXBXMXvXzXhXgX;X X:X<X<X<X<X<X<XL UX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUX+ X + Q ] ] ] G.k.n.n.n.n.n.h.V BXMXvXzXhXgX<X<X<X<X<X<X<X<X<X<XD UX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+ X X < Q ' [ { G.J.k.n.a.f oX#X%X&X;X>X<X<X<X<X<X<X<X<X<X<XF UX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+ + X X . X O + O # = $ > > ; 8 7 & & & 7 8 e g Z G U e.9 UX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX+ + + + + + + + UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
+"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX"
+};
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..73b25052b7b5988ecc35551206199957255789b6
GIT binary patch
literal 25214
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
SwbU(WED-y?^#M<9-~JyDkku&w
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..35f2cd5b9aa9732841571204fc15ed4a4f1fe344
GIT binary patch
literal 25214
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
Zq9$K-2%5dC+MFaF=!Odat}EM1{eK0y#ZUkM
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a1740b26cf9f1db274b65efacb25dc5e47131c12
GIT binary patch
literal 25214
zc%1Eh2V7J~_x1tAwIM7^lOnx}z`C>*5d@?uNLLi32vQUU76iotqO!PlR4icZy;tl#
zvBe~sm}U}F6iZ@{5;dOh%-vmF5EJv}{eR{6`(}L@_TDMa%$zxM&dj|Cpavbm%}s~m
zc97j3U@-t#SjfNMRtI=Z*K~B`-yPHdZgm7o5A?kQZ0riqwKGev_}&3ve>aw1{yke0
zV7Qesy#;Kv1^CcjnV!B=x-k*T^cIla4!~eIfCF)$ERYJo)yqP;JZdA9bN`^cTpqCx
zyF@=uoH#*OkoyOS@`!!dCHCX*LkWd8u5v$h40ZS#v9S^z<>h=zE*USBR!ODO2ANcO
zJ)c)15!LP~kTy_|Ntd`OuJcL?ylTbcMJ#n$RcS-M@-ok>X8eKW1x*bN)rO@FvM6~e
z`6Z&7vRbiZ{@l4zVTG4W%9X?8l?cYu<pW}gR8~2pfnTa9KfgdyBbLw&VUyHQDy=k>
zm(Syg#ATA2J+)$CQ)MX;Dkz=DT`mwygf-)-C}ES4v`H#GAmGyHizGFJ1<So^gas0*
zRQ6IT-KWE)7t{)66_Vv1rMq~t%Bo@!U%(YFs1<uj8-xX=4OL!zH66iV1MYIZNGuvA
zt1g%#6_-gX6Krj4NATDUQEiP-T5G5+Z7}2uN_1kP-1J!S?L0){l3iXU-qI(f(rSUO
zrbS?YKV6pyYHCU=qz&_%Dr7QQm7W_9EG>wqMvbUIS|P0zNQq<>-_{1)+v(7Cv8cvK
zx=U6eEcKQi;CmUWS@`QRK@u6(2(YqAATac+<ckV~1<`71B-|ZpYQ#dLibq1RTY-S8
z5=v!KX^9tf76`>6L1lqhG+!VPOT-0IHkK7oRnu)x4PQ;LyhbDti>L#es5@m9&_H<w
zBECo{6pDocDzmA=%cQghWP%!@m^jr4YFIh7!Y4-3in59hOO^{otZGWlVv)eGNhUKa
z=`0fqxv%uEMj$a1N0mtDN-GRIl-AHCDx8zBsDe}gfq>5kSy?43MJ{*kEI=+$Jg7QY
zEfNcxrI)Atr9+vlrlt*{?>t^sBW&Y(hlYk49hLmerB%zS-SVM5SFw)Dz0OM-+(LMq
z1h}WFW|A$bwM@;Y0H7P|uR=;D({p!scVjo&15Z~ai$-8zpg(I-KJe01Taj;|!xcoA
zirhfaXchuuVq)YJO9G+f&2=76Jxczqq=;9gI=%DVIrjNRl9CcPmFvLEf_zG-UM?Nq
zM!x`rRO!rX^9FU=yKX=Qa)IfhR~qv81XFmNe&XU+invJ;KUBmg6mfa0807KmR`Dy<
znEH(s2O4k34;AU&72i-0SH>sa5tp|Wt0}%{C}N)Cx-!;&6LaO5E9&u6)bFR@Pchz*
zr{nrVThUJ}eyxb9gZ#}|+@x{CkJI(|Fhw5!(I}5u9=6U{5d7iIIs@wPj!^zzUT2sH
z8kR^(yyP<`->{@iQq@o@lUB+5r$kg+OKP}ERtlV&7cKD-N*l&|H!u;T#h_L!mNZp)
z*One&_l2an57ad6lgf-({$dd+{~C`fDsDUpZoWiZLJB9gR63Uw3ndpzyekd84+um8
zebSS>0?~X~MQK&7RL|Ycorsaz^ze{YR@Qi^N72A(#Cnu^SNeHNrMgi(G6*!fiJH8{
ze%>;Efdw1b@uC`OsX)JkG+v2^n-`F_F(O?iB<)U%TLn~$YDf)|5)*ke?eacAYL@h=
zm=e^~RF-;Gb*>h2N>MD52ua<0b=bpnrW;?)!$U_y;AJSQtr5$oqdFTZ(nB?h*(n#Q
z4$H+YdbYE)M)Qpxpe$uox`7m>r7EvAc-UHpSdi=~Q}J}8@}odSd$c1ZL{UjTPkAYj
zOP62OoTUgnXp|~ijw&y|y!AlyIC*;rYHZ%Jxyr=!l>%(;J(NT3Mk`QqP@-G~6g0}^
z;4#pBZOX6xn$=ZKxIt*@s!g>T5?(VoXF_HHD)v-smd&C3-^e+Sm(LkYl7gy+O5jPv
zBB`Jnpg>Y9ks5-R*vrF1C<K9_k)$9$iYJtMl?uRKqee1c=uyJgpyf|cQ(3~R5%7ft
z9zvNwJ~b37G#@HMK(5hA-^<6YP_tyPf_FZ=){*z;4F$NqQ)}6GT)Wvd!U?AHm|mn9
zpSQL<JIIUesM0lR(5%PQ+I4}>ojZeiCj;ofH=zYs0Q&l-U~Fs*9Xi@Vr!G!(%@*2e
zx`SFbPw1-S2Lk<Gpl{>}2F88C+S(d=^ymQ&4&Fd39>EvHVli~q?gw23fxy=bf^Oy%
z8-#+uWFT}i8wgsaaUkd(1KJjmU}7BxU>^s1mhtp^44643fR0TH7}+L*u0slR?~w$S
zHo@TH;tzI?gTPi42z~nY2Me2Muy%?A$DVOu<B|kD++)E}m;@Gmh5^qZ1N5Cn(Dcs(
z{a(4C?pg%xJxV~|YaCdMGQf!zacj>}U?(00&V6#BSMM|s`sRS6ZvlAsi-Dg0W59Dj
z8hA$Kfpd5vc!U&#cW^Oyh898ZfedBf5<3xmV<tgRP!NQNheQAVQ4kiL2(huTFl^W`
zh)o#{fsq9ek}w{U(=s70dkUndr$cV;D99-&1BpZeWo2ccA+7+;z}a9JDg(3V*`OA(
z81x1#gl_Rm!F9+C=o2>;yy9ixogf3xlv&_AOa|6Nmw<QDeCU(84Acg$fsWB@L2uY*
zP#b&z>{2#Cx6~bAlD-Ri=57OzG26g0b01h{?+2Svhrl842sq{+2ake1;8}DC`VF1|
zLBpm&K+<doN|^@(GiE{j=oyfhI|JhKW<%hJ1rRo}76y%34E?j~AZ*lfNElNCLkj0X
zlw>)ilrDqpaf?7wvJm|JH$q6>Y6y|6gUI4d5Hn#T#7*7}JlAh&{Qd+;I!i+NF+lni
z&>Q<D7)ri_9)%|%E9)}ly#s}XO^`RO4u)3khwQ0qpjfsZ(r5065jDqQQteK#o%RrX
zYZ0PmUWU|pXCP<sSs1zWBf`g!z5D_c*PVo%`YSMc^(RoY>SHKfa}h?b`2zA+U4e0%
zK8Fc}{0-NkaLad4w&Od9TYe9Mmc4?=l?a2^{Rz42??Lg78!&FyFED=ZEts(XHk2K_
z4_Vt@L*6cgNk<-mWG}@B5h^NZIjF9NB}<k-<&q6BwQe6sS2w`?jr*Z?_Yv5*aU)FI
za2jeGK7xwv*I;JD*Rbg57qIH+MW|@_8Kxe)59P-m!LpOz!uoSx!=5YGVb0kHQ1f9U
zOgs4)s?R=#Ip?23&84SM`|0nn{L1gJ`jgwR?d#v*==Gmr<+W$9?(65U@!RLH<+~=>
zaia<L{rD7)+<F3gfB6F%8ehPXJAc60TesoNZ%uIF@hiCc{6(`0cu&9aJwj@7azb))
z$|vuW_LCUCy1Ke1PhF!+M{Or(p}U)_tE*ezzyVPe(_G(5oy=3`$0R2YpS!qxRk7>d
zh9k#6`r#4_H`tHxR;g2Xn(@iW$<isSSSWRW^x)o|##@(~LsZM;dYV*p@(g+ERjVer
zJ&|WPx91#{PoJC?$u$j<laq#xpDYinCQo#I#%1`v+I-1bVszt@>H?ao8IzDOG=I{h
z$@Gy2)23&S9^d<Rs_!2Ayn~F-G?i{)$p@ECQVk|Anw~wo9vR-)c+TH{Go`OqAw$U%
zCr&I=4JI#NG+pmE{ocLXjW<S_u0MBaW^;0$L45q^vX;rqOkTbG+I_>LNB8dDxpk}7
zWXZYN%H#%mF)?FVk`aBll#^GjDk~dl^6Hw~Rcgbddv_?q4wKol->`|vE*n=iF01>Z
z?pc(6)vC!Oy{b*WaQ%)bu?%-_-@0|w-ci}{1~G%mB;&?Ox*xrC*00ax$&*Hi7oEFg
zuC?*n)h!!0%%3xTYDGk_f4|Pk^fAE_NtvX~ZYdl2T+cp^n;L((bYphqv{5DkCt9z1
zxWvZlH=DZ#@gb6Nq+R>uvQFOZ+v}@G5AM#ZUVrfHr5k+(23&}Vk7*yTNY9UxurSj4
z+`;v;bNpGiKe}mB-Otpwde07HJuc|#8R+sA>0L6o^xY2~HVmq+-CezfGE9%UbL-N+
zYHNQJU3t*c)m0FR2`$W`k59#eZycF4R=d4?@tf&&>U3f^t8))sK3|tUe7<@zm%gW@
zkOi~fo_y<m@6PS@-K~Fqxh~?-BkIE)j>axAdVD^QK778W+=3WUNTnBgU47Z~qx+*r
z$GaD#C%$z3>Di-un_MmXhlGj*?c4LXpec7k3kx&pV;A+})lYq&|7xC|S*UYm$jcw6
zntG+PF?0>@=W0UsK*x?9y0YYF3P%=<EUd5hG`s(EzzfH;%)&xDtwcxrw1Uhm2@Rs@
zkB{!$x^d&&(H%=?Gn3;)L1t#biWP+gy-mLhNK7lLTd|_R+$WPlAvY?fPajc+v)qKF
z3IFklk(rtG^#z&fnY~Rq_o-h|UsseV4+UH|TfThu=#I>P7bQPS=`UU=$gHa`NN4xc
ztXC9KZRv{ij1Noy;;X(9OYApYx^&bG;KGH>qPhZ>y6#QM^1u~eDEgzy?W;$3cUrGM
zzt0^mT)ZGz!N?TVbGce4mx$ej3tlumdU)rM`I60vMCanlBCc@NveVPje0(x8va%#u
z)}4oZ@zd{3j~?7UW*$^S<)7Y43F_<Qw9|d8x@gGlFunmNXzHM*(N)LN&CS-<wKLqf
zaADi&%*?tvR;qUwrN_yFt{#u(sh--KD<lpq{e?+IEV-3xVtG*4)8n<ebm8==3n%KR
zJG;D<n$2rX)e6~<i>FRsIQ;>Y-d6H9!bK|o)XB^=bv79^b>Hcd(yUbw+IHde$;qDT
z2GkRL1Ld{}Ef}qmH@BNIoIE{7-N1mRr~xa4)xoEZ<h`RZYQm}09tt&}$K!LEH2Hiz
z1FAz)IcZxq;`E8025$nV2-I~cy?TtINpIKXqLP7q*VLoNXeKK&z+0<jyk3j+Jg)CQ
zQDo4KY25+9^r$?jY%V3pGsJ)PsqWk9AyrSWReJT$D1&CoXP+gfwAon@!@5;jw|WBT
zefDWg!k60@#I&89h2#XHpc@mPDlgzOgD<~ax9r`?-)dFzmnku@{QWcVx%RAG^Zq#$
zVfDiQzi$Qq7wuaq{8ZKR5fwib+G|0VE?wmQsi7&Dn3w<v>_OYm68Hi;07D@_H!lFw
zKA>mp0o|>AIp5UT*%@qX+`z)t2YR^pfk@=e`KP-20ib6#2z1F01*<SHum}NNi#RZK
zj0SV(B<Su%ex=tSaCD0R2XO@S@{R-x*P-C-9s}0BhLgWJl&-~tN1q`8u9=|kkP2oL
z8@c6zmS-`j^)3Z{&jK*=Dh9LO65#txgl<0L!P<QUxc12aE00{T6pw`-zN5jTZyGrH
z<%3hdq2L`D4?ZD7z?pnd-^f(x6-Yj4Kp|L1OoCoP1t1D7hF$|Eg3q9d5EvN9`JUmC
zvB36-lai94Uq~7RB#efELvtZ<cm@PTOCTU-G7K0t5uy@`VZ?|LFfw-x`JuTmZrnI1
zEiDD;J005jRfE8<0*naYKMM?lXM$0%450raP!FvI^{}PTA)*chkqZb*fgfEDu7j$;
zGrAJ`#7_rtLN#~|nM?lZEbvRK1&CM&5V;9DN3R5p=q;cVzZOgqRzbHRD>+})bU2~^
zQBaH9MSANXs0}>|#tOgHI&}*;W|8ljy$UQwGT-$8xQsafHo1quaqKa0EjSE*B?rKR
z{MUela)?N-f}r6uA!@i3{8Q$`pwt-<o+E>Vj0zZ*Rt|~Tl@L2(CJfD}hU8JRVQ}GG
z7)U;BT;4)R9z7ot@@pYUvItVMWsq7l7seLNhTM{6kTJ0i^2aZQ(kUw-Sh5xd7OsZK
zlC6+9X)VN-l5aa{m)xgKJ`ZZCm%uRRL(ZQSPrd|`C!d47yjL($RtNFrJ0Nk!K1i8!
z6f!H;!`PYYA!FJm$dYY`;+boqK(-0eXYGS@Sp#IxJqUU84})Y;1N5EtISikD5<+Kw
z4xzKZgUs5GV08T@$X#(2^44C1yft4z;pT54W=SK&EWHc;mo`BJ`LfZgUz3kZe(dg>
zFmc~aDA{uxCLFj26A%6dX`2ypwj+!te|9qYv-!Ib${G+VD=T5vtXVK`!D6VWS_{>4
zH$nZ{&9GqWahSIKDpc<M4rU+y9u^+H2CI&ohl&F?VfxX#<ikFO%^zQfJzrdh*=K%(
zs#6cicYVV7t_#U`t-Ja=th)3g?EmH$IP}9kSVey8`mdkD=5Gn)w;sCr6!!ky1c&du
zfD=F8gA2bshLgX(gi8;fz<Kgn|EZt)wVsBCrUtJAf56;j3l_|uKU1pe_r+>zhs7;i
zHDinWjUR7bY2?Dk-!<Rvsuvr#XvP)_0neV?|E=*OmgMqv#ofVO!((U9sN_OG6D2t4
zvHG*d#?MyDZ^vtgM^3I(1pik}zwgVww|dm&#>RR@;o%XJDyNjogYWC-D;7Vw|LgIf
z4;w$=Zfk}OoHAv~a6)-y`2?Fkmp3#$dvO2P5B*PZ_rrqw7EhVtx~50rl*$RNBm2+$
z;Wbt9;NHy-J-F3X;4@)D(eTlYpLq^-lYP>-uByu0-p<<E-mXg>*YHqDQBj7|mCI*+
zS3G^PcGRwq8f^puJwb4YHs?p{^(!hWay;!DloN3KkEa2*)@KFz>k714;4Be~f`Wpf
z`+lnawJ|sP^?{=ger-HsYN_3o1<s-wF?MWv|5p#^KRG0{c{!-*$zc!cK7DjFSzz~%
zj7?9^^LX)S;m@w=&Vvpt6uD*;PjOmU?Ju%1=|&28Yg*d)O-aVT%=OG4zsb-oF)fYg
zIQ{<QJ{y24fMY2oo6^z}jg2>L8lRU!A(igiyneRdcXwmsEco(d-iEZ4w9*Y@xSJHl
z(tX=I(R=P^?`*7v&(G8CF`G(QM(%ccQPG4V{W*_cJ-MH|`UCj<Qb|hQ_%ymZ#KDNX
zpH61Id-v|%LCf6M-7nB!*;k)mtjrsqlG3x2axv<v(N3UZ9bdh8t~6zc>JBT}tjb^5
z{YzIjr?iK69?E=q@#=-18eO5Cp8UIt@h&gs>ZMC3+UW`O^tytE26Pp)FwME}#ii*2
zxwFd7uQl~FK)@=~R!Oo$Tb_VQ*X#=F@p|elt0Ey%-sj|*5~#<=LyMqIGNZWP_3L=;
zZ@vv_O(Y>iprNiEOuvOEeEt2nwi~Rd?wc^!{#Oa)VcY**=MD-xMaA_}wNu)+Zx0<i
zcI0f8E;@QZo;om_UT&{Ag1NZ`SXx?wg@qm1+S-DPiwpGX)eAg4Jix=-hqF!093#QJ
zXB7186AAV%L&3>)7}&YRfrDEtI0%yggxO&3o(bSZ-P?O2Xp>!G@0kjAzIk92IvJb-
z#(+;yI*3EYfNNke^z2^@mi@}WDyS6Pf+ZjfF9MJ7ao`t`58i`HKon96fkDC0zkh!S
z3k!qbK|>)rIvNrZ5+FKuI1C>?9KsUD!GPpRkd~GPSy@?-laoX1TOMaaXa~*$lm63y
z->(`VXdXcDV$cd+0BWI20S0^kdg1fIK6EPd8dwgNQPaUCS_b0ysUVJ>4#JpfaF3q}
zK0{`KRpdOdOI!e=)CHg!xf)>5M(7$#mVNYAFdMQ4x(!=Tw!<dU#D~B#c{OJnSY<bW
zW$qEMA9EBO@(zQ0VFQFGRY7p-Y=}&+hL{nvAtqxE1ZK^H{v(%xf6fvJ&RGHR`HNso
z!8FLuUjQQ~%!ACbMUXvV0TfSM2IHsHK}^{W$e6qmJSTku5?Ze_t9HVu`G=r%#Tl5q
z`V5q9_yk6;x&}q-KZoLtU%|lI`;fREVf?<kw9ej#$wwbU;jShq-iI(<wjO4#I|8$|
zoQ1hN&%^Xx*I@alk73ibU;keE|9|*@BB<CYo_vqdFry%^ko%_9D<{ov{G^E$l{8_&
z*DZ@yAiG&J?FLO{-`!#cC#57=RAtB}ho+O3i5?st5*0pB-^<y?+<;d7MEe|<>XPgn
zBR*dXU`)K<gwn|TqOzWb9eEvvFf2BBTt=XYWA{Y+Q3IWHAt^4PZ{LJ~fS^Px=?IB4
z6bB8B?PqFiY#Ao7_I5I#J|)hK(_R`1m%cou9kf@{_90Bu<MTVUZ{JCyd0}v;3zSBz
z(O&r^jhL^|$=yddre*tk6aKsBmKJh~w*O{S-anX{nyM2z5_AbB1WSUk;yb(k_LkcJ
z;Xs_U2yTQ_!W2RcVKreZtv7op-bL6<s3*)KWGd2keRruMvSUOfdm<YG4Z4Utcu@pl
zC?T8B#$MDv=50$DL71bjuYXcYOY07;nJ;)e9@4srWP@P0Zrza9PVB%p!S=?U*jdW~
zbp*Zs(A5{;*Ae(OYVrI2*r}`Ex4h1Me<1wQp>y9`9ku*#chT*COV>E^XCs>-KUuhC
z{Or&t|CTUp(!JgZGaqT|hdq+F?LX#iMi@z)w~>{2r&Fg+ukGyYkbH2=$jHF4W5;4n
zK^YDyoQENjb?8}i2wjTLpk2x)>~0%_#dRmKbj?Mau<3Iw+wmQi?Y)T;4?RFyE8Yv%
z?%9pR-|Ro&tx1S9G&EdFobR%}jf{-MQKLp7t>HL2Zww}km7!<hK6I9xdJA?LJJF$6
z5^ntVIg<Z|%Rc)Z7hHOZvX7qNw3F}0ox#5MnA>u>`bXS#NtUxoF0Kg#g4bl9AlV+x
zh#x%zJ;;geQE>8|uphY>t(*qqjvGx}8&*;qma4R&lG;$ZuMu<V&f$dpcizdrN55jm
zzsEn|Zfay?G>PQ;ftQyTCnK4enH=J>r=Z7}ZRnVP{BL2GvmZ^YqjCSuKe#q*P-(;b
zi%+ql;b#oWoR0$2K^RlE0gJZ(&?bMk(1~}6f3NrCZcP0>i{|C?;NW0PO-<#HoR*2b
zb3Q<_x856eqYk3JSp*)v`vUh-8@B&IZTN=T@WnHf9sL3Q6D!e5ID-2BG8)+?qHnSc
z^VVL$Nk<;F;O{Z0@*eRQzXx|M;$BV8=_@AZNl8f@VpB$A&)jWjJNocH#3AGxhT-Y^
zFY(A7YQrz`HY_;yHF^&$M)#0noOAX8R-b)>W&3ZVt=A~D6X)WHn&Vh@@V93Eq=W7g
zfB(PZPx>X7_4|MU190%*!5sPzpMbVG`_MY~;C}?ZK`35)@``K2;oE=Uq9dQ8Ti<LP
zFk%+2`22UQ{q%R7N3v9X<_T6DeT3rpYEGUKXY9fW2kvtG`zFsPH%auC%cmMh-UG-7
zy5sBXi!m`V7#$Obo+-1?GW)>40^cA6uQdIM=O6xowGAJUK1#-{scUf?jl;UHpHmy2
zVeKc>h6_(o%Gz-JF-8_|LT!UEjGnL_OZPU?99jB=_(%SQ-009;Jx@Lvrym*IlINkt
z$o(x~(0>-{c@(30#-5h<vi750-Vt=lKf%pg@=dtwMq%?%TQ>kdf8K<(yN{rCj|8k-
zd5Fg01@8U%58V3wn>H+_Hq2FNL+ZRU$Tu2*;bWF#U}h~@Nuv07@z>GO$tE5DIy5vC
z8C-|VKr`Z~3ZvK+D6mMt(7e^CV?G#7;_934F<EyiIKhF<TcfZ!sPB}HebW}BfmtNZ
z+pr6*9Aa_h(aU(@@hd#_+e<t|ZP=sIhWb`*C_nZX$E^DX4Xp>Gne*^JiU06-^u0Fm
z|HjA12Ll5G(Is{wnxyY)fo{p0v8zcej#_n%lgEP1-=n3+C^YOdk>l<-_Bc9>I)r9n
zv(QACjUm*=vW8!|v_|GpsH58t$5pSw1)Gmx)yn-isdgt8&Dnyvm1{7ibQva$slkZM
zSs0u&1O4Kr(A*x6J^jbfT+V*cy=U5Q#GQ<MQAS(*X?+?+ems&7jXekEW4DwYt*{++
zY*H|xV&7YO*(+X#0;eoA_9~)2O2ssqbF)5rj8l)@$H@vE7@Av${gUTkV0sPq88Q<E
zhW*jbz7N{kiqYO)j1CUH(aEVdIy?79U*B*H3W~zu;3#x=_r><@wO;D$TTWKkb#2;j
zWEWhHkB`S*Vd-d)y!9>Ux)-DO;MpyBPds!VvzC2~*1~kObxFdC)hBSvcTL>d#AF~!
zLNc2%4~Nd!O)~H~7Vo%$lMc)69Xqd)*t4e>vURaF#9}cgztPdr+#ED8FhJ7h2T4Xc
zx5b_AnOIp_y$Xv?M1vu#QE%Ah7T||3L_Mp)IG%L#=+&R#Q0ZO_9leBfTqWB3j7Gj7
z2v6O6&aF>OmYIz(|J2W@qZf=JnTyfZdlU*xBFX+5Npr9UvzMR8lsU(-n|UCLL?UG4
z-WJ$BCeO@9Bzy5D@$dPLzR&mb^GCDj*(gZd*a{o4t7#k-t@;?pk=@u?yB|9G7NBp^
ze9~*%F>}es=$AAHE0*oXvkzW!I%VgNe_+h$x#$yB#@RS*9x^$~slS5$sWoU|8HaYg
zM`0I!KXh>s(Kz({OE^0_lMJ<gMf}@5C#HFOr01X_)Ja(P7P@+up<lvOP9`dLevanO
z!``wReUlfUO^<lI{QIBW`n3I<U(vuc9OoYSj<YqHPM>k=NekKQpIwLQ8lJ@8pJd;G
z>*K!y*#b<4Rx&@YHGe&8_g@7=)??S$H7%eOu^a_vQMmQ1`<&f1r{NmfxDLl<SDs<b
z$G_vOb5AizdJwyqCnDcwFz&hXJzk<UcJ#D*^c^VSbmHnSpW_l*Tj!jA%C$LJb{xAq
z4MlUCQ1tT)L1xc-dU~RTg~eZjxHI4AL*oC|{M8MsdetR*6?TqV*#f#fM&h&&8u0AH
zS9t8+OI&{HD|8U0;HK+xUKQJ~kv@&VP6L-=N8jl<U~n;Bdhi4-9b$0R+3UEM?3~Rs
zpI2OciX&(3M`N29>`uJB`^BJ7L>hWV<)O1z6x!H$5kCv^+q$Enp$X@^wFcu)a(?YC
z-!uJ6AMN<H*demMC0HA*QqezZJYKy2l#`7O7r#bl&s1z^e1WS!xs3wz7~}=cQRJyZ
zfk7ZvF4=$qk%jmXwRzdGYZ#I=9d(TdqP9aCYK6?jZmB!aIBjP$jBKLOE3^<@$QCjo
zA5B{?0C}CfQM0`V@;bO<$Ie3R)VU{i=xB@W+L=Aj)N~!z%)JELLDu(+Sl??7SoQ`{
zYf(M@GT~F?IgUnsQ?h-p|BQRDev3kJ8mDWlTvM=}xI&&jq8>HlwxX7O8g|w3!^q?*
zXlg$gbsZ>;=Ook&U&^KH8n=eyZ$xW}5(X9#xb)=rxb~~(oc%NN?3;N~vb&L6E13-u
zH+eVdybrL8ZqQFE`~x8C`Ziuf9cqLwkt1R?s-<5ce2VIkYfvL>397pmp{`Llt~q)R
z-TS0tKujri5S5~O+%8m4K8<P_R|#LBTK|<~Q^cdDTM=sXui^44(Q(j<HrEwBlQ7)(
z<5SL_X1?V@npah)pWwJ%KfSe1GGDnfKk&AKy9PlDqZ`+;zJcIH2%!|GULssZ81RAo
zngVK0W09{PjO}^e*hN@^FyeDLsGX2_3?X`pJikgFRj@i*uPY2j76b7N>D>djUT|||
z@r8RhXbi0xo|!mu=||1$H^aD{H?fm;zk3S)BEn*jG%eQ*XZ0>dNIFH_KPK)g-sTXo
z1~o<H*u^FtA?-8bd;}qKojl(=IIDt<0n^8=`I}h}#8006iO26YVfD7t=-`oxo?#`J
zIC(40jlq~Y=P<3=4>|t%8?IwVE&uxp{`nk#hL9yMA>n|$@55VhXKfjJT;A8i&r?5d
zrG8%eUYwO+^2xaBCvD-N<SvL@f<1aA;MrTZF)?=rS~$exv<)9M&xM@DXHnlG7KcpR
z$=ND7E3TrJAovI3Y}m}5A!f%D(nBq|htwhrK1jT;%6Uhw|3{pg<t}7#3+}4?b=>pN
z#wiBvoD(o>!eTsi_c^zItImb|Raa1t^juWQT1=bIe1U<-h;zRd{6~Is8{+o9sh7!d
z@<${mB-=4N-djdE^k0DBUyabG9Km}WcJ4bK&0=PwY3w{SiC=`q2}`is;5sxM@&RgF
zL^69Ag9hc}+zk!5`NCIt<kpksxxjn@=2J>GUq?f$1auB8L~Z@hg~T~sh5uT}zyA%_
z->m+y<p?Pk<#QqI9rH18E`p~7fyNuUc_C<-An>#iG}_Bw<xzp9r6sq%dU$wn_L#f7
zI|pW;k&jJjGznUy?~PHQ-wO?l`=Y5;7}~hRqm^?!nv<_)>X<+_Q}k=rRt-(>RN`Er
z!v6$}d$oo5zm(76({k?0_HbB;Aj(59CaztK5Y*J);`uK0=+T4Y%hph`!CJJTLx&FU
zT~7P<9rhD{9YTBJT*+}ChxHVnhEn=HdfRn~+b!oGs>0oc^i3zd_pYZk+O=zk>gw|L
zGQMma7<ckh|4})VH(F)gn!xcd#m$7>9RHjjwsCqtyiOs<)aTti|6|^5K|@1>+nd(b
z*8ZpYzG-3elwiC<c6KV-z}m8rbmYC}ez%YPuX6u4Ah{dZihp+ko5vf7_dbq4YfHhy
zV>Ac;WV)jruOpIQ(4riDeSKtmD{PPde;0S^`wyY5P=daMC4^(d{{zAb!U;&&|0%d;
za2$L0?#<~5^4&NY?%usS=bN%Q`B!x^IcGkrv9a;L<^MuWP3_(L&2l+fPB=x}>j+0l
z7kvQ!((9BDy}iA;HZcE<wS)Phefsp_Vm2>X9W0%e7U@4t&E|S-ZEZQ7$-vrfVq)?i
zjT!Y>n|nPf{M8BliT6ChF8X~FCr^^6Yk78IH<kPu7-v;59m2+g{C@5}(<{n0F|e~E
z)(&=`rDbhV9S<gptZnb&PW^Gn+}vE}UDR8(LzB>#xX&f5C2WPf+go(3ydE-nX{!y&
zYYZ$61LNAN|CrCj%^Aj@tpT8rFSaM|<mB|uHqf{}p+3l?HVfXX4f1xV5e#4gdQzMO
znO{v17+ZbG_GDD~wuX{FOUL9%l?NLK#@*4;v3Y!Sb#*a2JDc-;|E3Lpklalp|6S|7
z+wgYiLcaeVCjal^tpt-dRT*Mn>r`uf&(?wI)2IJs8|>}vxqIaIJ|+L%{$KECL5*yc
zLXwXMjALuwO75(Wm22(aVd&7ID3wazY6BZTw(quR(IT8PXAWEMezmr?*8i9Ml|h^2
zK}LP^T)EH3cq_r=ytVwi3v3Q7Sg@c)8`zvKE-uCuD^}p*#fvd5Ee&}*-i-eech%61
z*2M8NA1^vMIJ{=^&G@r6F<tpL+}Y!5>~)2F8n4GISFYsR5D^i9iHV80VZ#QDnt2&>
z3m36Ht5eYOiTMACU`X;jl4N`taX(;cYWgXSc_WR(Bf9rB;TT~Zf&D#(fL46GXdXSQ
zudnCYzJ2?4j{n$cb=c1N+m}3Eo%jDR_y0!d>*nV6g2~E`9Xq%)eCqdO8usUc0sj09
z;7P>)X@c(&QfTa+(AeFjv1ETwK=Cx<pGL%gHo#BE0WORN*!FMr(Enuki`T<`qILK}
zEb(6gAUn?9D^b3$GZ_Gsk6v-_p|JR&BEF%BPblJYMGP(D*NXU6tGKDH_+9Vkz}vB+
z`uBT3=Y509`#UY-Hs0S+#t#+OmG2*M{lZi96A#|Jzk|y72AnVl?me9w+Vc2eKY9G}
zVe9vHEaYu?KTGLvgW_2$_Ux56VSoaC2o8icUsU`r)hnVoR88yk=cEgtGaH53Tg;Bv
zHnc<?Jv%fo>Gh<Wh5r>J%ZPmjR`FYnY=-PHaZEngy=U5S%U&bTSbOALuoLHfO7S;3
zh6D26vtCEiw_B**CRbNiZtWeJI~E5Q&c$HKTJ$J7gguK+qpNQgPTPJJEBAhf6$ftO
z<iq#h`J77OmK$hbl~D0_byM5M(t3QK`2=hY&B`5v1IN^$Yr$dcQFyWiL_uS5%lGnq
zsl}In=gx50*>2(HZ=28bn)f+(-D2mxGyke?YVSNtOUplp4<C*h8JQTKBSV)l2e>ob
zwjd15=bnF2o-Z!^_$j8(+J{!|SvXL#8YeW|Yp#F7fnSlvX5qW)rtw`$KHTf%<YY`7
zo`D|OtI%%rk-vmXU?HCP^(FW0$Hs4-VrJDQ>>ED~t4=+{fd%W(H)%GO?71oDaO4qt
zj-{@xy2&TbA;08xLP7!#9GZ)cS=-P$=iuMM*?$c8{Klc1PcdV19meG?#1FoZ?-8<R
zHipkWiNf%Sn7{FBjswZ%2d(R-b<LdY+2`y`H6UR$T8`YqJ+ojjavvH6%ea{PPO!>p
z;M&dVHcQ!x_M%k0^zaF$7R|*1*(UC}1$K_ao>^dLVeE`CZ_QWe98ipzwI3nPiPf#^
zr#aQ&=jVsMk*U}{eFvJ2*u$Zl&v=Y1*@{MPxoDEGihJIJjk$H|7BuoIM%O`A=rd>{
zCT3USg0087XAjtUmh!B&?#fe~edafud_aEQ!JfY{wja7%wQgD$&4ohYpWglB(RBDG
z?i_`|FnA{VrPa#MOZMDG3-7UL<X3^_;zIOKnU7_Ae&O!LmTpA<_;L(PC`XUJY3R{s
z2nxO9(ZxLmT|8pZ(>D=C;&{|E_CQ06&=q{6fdQ??eQkJTEOr~R5)G2Jau7r=MKjk-
zEF;-vvNLwWm)O&H6lRpw;ij)2b8?<IX)XE=lVReFeOSEx2X3y}ic*^Wb0z%!{kb!9
zX2;Xq+6}D&UH{cOVp5B<WqpTK99@42o&54q6fp(G3DxKxT7sKDzK)0Qyub}#Jwo^3
zLY#i|F2+sTg`Uxs=oU5sd-N;B9xi^Iz1|vZZ$wK=>k;X-PAb(~Ifx@rCw?tq9R~sR
z@rbFLaQ4yfF=+Tq?%Zk$=@YLZb1^b`BA$En3dhb|kCH_V+;eWqbFJJJSJB)#343`*
za&<8uzctudFV)}toS{ZXok&6C0%YfO+&SsM<>(br#?9wdmwv>ktl3;&r^_0U?=umt
zdJV@5zdgo)=wg!dCS3dF@0dOJAliFoppz&TeL{wycR)Pa*tn5@*d2|HO*y+?3AUd?
zes^zW{hdQ+FX<e;5<5iHbI^=fj~4DZc;e@Kxc{49aM;+nxbW~bH1sOu&N8(;i!nH+
z5Q}H7#U#lhv=pYJo@YMtqwAZ`EiJr8VnTi`_D`9KJp&8S#v>gqT!*5mV>B9AgrLBr
z|52{;5;W0FI)1)g_)=^awiGpn9!2%ki`Xu3KI&Kw##Kko<KU5%Xyr2&HKMnm`mkek
z|6|lOi$+tQB5dbZjVv!agJEYEhQqgUuoR}?j_Z%Pb7Xe5J>kH;7HdEc|FJ(P>QC29
zId_KJ(~RATkbLgVIh+41)HRPoeTx``;TI9oE+ZryM2J}X)}Ft5Xl;vgE1O=)@@ECU
ze}-AI?das2hbeQ8HrMaeH}48}K3jrw)YCs};L1!o`{wM4#R>ZnhMh);+@d(&dG|R9
z8$Z?h9Yw=%&llG*Z0ID+tXPkWE<M8D@iQ>Kd<RZC@(>+;$DE+LUATSToFBJw=P}B<
z2W^y}mBsC9bxzPW*x708^CMmT0E|yB$3s8d<DS7<|IKr(x%8BD)&g1&X+0B<-a&Pz
z$oKhQ?|_&cFXVM^Kp1*Ve$Jv=Pv2<>q>I2R48hC~!L$#8iI_WI>FyPWP65g2)Nd#{
z`42%GuR*9Qu*2@wzUb%{fjvDF(bXp%dj*b0QCJZQOe6o)w~XCJbx(tF+}>~l#O=Pu
zomUP%^roN1;}Hyn2<^50(r0GRKQP~(?ZvRYJeu2ovp3MGfP2oV1Ph@Q>j^s``@3!2
zc^<3VZwA%di_*T|UV{>BABb`It33*Jb@gYU{A+6^IE1i*tDo&J4?B6AYq!9@#U9^3
zImh`sXliOsY}UGLFRujW5_WTY-1)y9264$Nc80<Fl<jpf`<Cs)u(PE$%HqyD-nVXQ
z%PnZVUr~Z~1hzN5jbvd5B%L{+XK2jrztMWk)y?)p&CSiZe&y_K#eN&x-&LM{u`yTf
z&9VKr)^$@}=AO0vwnzzfp}OOULk&A`(TrSmS|oCRYfo0W-^|X~lw-`^Nnkpit+9+3
z<G?tz-tVKfe@i-_?RTiP$wAJ8=_51Z64Kc&MC$D9{Q6yclFa{5mThKc*4#gAKbYC-
zEKO?;)Gxo$Jn?#G{cnd5D*JZpJw^6i_3Wngo+5i^K$QbK8(`1kv-b%oU+_PupM~}$
zV<l{F)6LDTc`vZ_*^w&9XL(RnRmE{&d!F;=&BOT%>)9E{O_G&Pe^uFE1h)U+L$<>_
zlC?`TKW?&Tu<4p|AM6N0La=6>y}Z0WD=jU>^73-5U%MGi`yYMXp+jKrzbOB|9r*V4
z_V;JanuUG)_Py2KEQ9RLmkR(Ia{*4h|DON93#=YC=i0xy)M!fe=L6JKU=xpRC2;#L
zY~Ymd?W(-9t9)0Cy|3H+t}a74ymMcK%`dhK!o9ysX*H-ErVuo!9u4l@U3{&Eh(;~n
z+qK{_`~QR8RGRmJG@rJU&i__mXnRDzn|HmQS;Qm*%lPSrRtdG_<E|5!MZfijk;(p!
zV774ZprPoWvjp7>8?a|k5tgnvgGK8<$I;}YjNd1Jrrya<a=BHVOW8BTfm!p=A@6YW
zI}|R#CAjI@uQ+|zHFOOuMxP<GaN@!H?46WPm3e6%`UD0AqbPL&nhjZlmduaKZs2@4
zJF<^vt~-K}>D9RW)5lo6@hj{#upAwH3$7`$YdX93dSaKj0J{xakHVO0v=5z%R+012
zC0d5!*y(8RG8DrS#-U$CK8i!ekUgBro+sn%Jen`D*3r{B+r+Y883t$9qbQ^l=k7dD
zzVc4&KXMs{jQRlW+~T;iNTx%Xo~60Z<`n3Q64tY4E=~GR!^x}9;HdeB&^>-8W=~i^
z{_aXF+wci`4j6|HZn3m>*^xeMelGGf>D2a`VYNSLMy^J^@cAeqzaetOOw<ZqfadO*
z=oTzNZSpbohiyWupi+#_UxecLspKygVK>_WFW6bITJ)A5V9+MA4{A|6a2E3WRm-1M
z3a)K_eu}ltDPRoF+Hw|yQ)gpL*$#9IE&QGGk0CqqJZIN3`-VMx7BmmRYaD_whmeg%
zp_9=fYC4+tj6$EFbR3X83EjiTp}zT`yOe(>jBeb+*@e9)l6~O#)-xhZ$Fg;Ztw+$j
z<}tB1x1s!5g!K@&=ld=?dR!XS^`ot|9pvl#5^m&6up=Q23ZKrla0`6M_VU^ISX*0j
z=XY#PW@nSk9#ED=Ytb_u_8%&=3SE3k?MNq|Q?4a8Ha1F~&Bbibg{>J(zth}0`mVW0
zIyjy5+acoc3#~s)4>KLSX~2L1mzkfNS;o#s3}WA78n+JZ92^|>Y8#kG06Yl<*yhi4
al2R9)fVciuK+B+b*Z&5gNlm_&`o91W$ivzI
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7fbaa640c6e7d06647f2f665f415c516b30d2bf3
GIT binary patch
literal 25818
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2c882095562c025edf6b2db2de264f586fea16cf
GIT binary patch
literal 25818
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..03352038cfaf2532ee6cc997680807a3abcd5d5b
GIT binary patch
literal 154542
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
ZHCjMJgG>KSv1C9bXa@&}|A#_4{{vA)N=^U(
new file mode 100644
--- /dev/null
+++ b/im/build.mk
@@ -0,0 +1,135 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ifdef COMM_BUILD
+
+ifndef MOZILLA_DIR
+MOZILLA_DIR = $(MOZILLA_SRCDIR)
+endif
+include $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/package-name.mk
+
+BUILD_YEAR := $(shell echo $(BUILDID) | cut -c 1-4)
+BUILD_MONTH := $(shell echo $(BUILDID) | cut -c 5-6)
+BUILD_DAY := $(shell echo $(BUILDID) | cut -c 7-8)
+BUILD_HOUR := $(shell echo $(BUILDID) | cut -c 9-10)
+
+ifndef PKG_SUFFIX
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+PKG_SUFFIX = .dmg
+else
+ifeq ($(OS_ARCH),WINNT)
+PKG_SUFFIX = .zip
+else
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+PKG_SUFFIX = .tar.bz2
+else
+PKG_SUFFIX = .tar.gz
+endif
+endif
+endif
+endif # PKG_SUFFIX
+PACKAGE = $(PKG_BASENAME)$(PKG_SUFFIX)
+ifeq ($(OS_TARGET), WINNT)
+INSTALLER_PACKAGE = $(PKG_INST_BASENAME).exe
+endif
+
+UPLOAD_FILES = $(wildcard $(foreach file,\
+ $(foreach AB_CD,$(AB_CD) $(SHIPPED_LOCALES),\
+ $(PACKAGE) $(INSTALLER_PACKAGE))\
+ $(PKG_BASENAME).txt $(PKG_UPDATE_PATH)*.mar,\
+ $(DIST)/$(file)))
+
+PREVIOUS_MAR_DIR := $(DIST)/$(PKG_UPDATE_PATH)previous
+MAR_FILE_DEST = $(PREVIOUS_MAR_DIR)/$(buildid)/$(notdir $(MAR_FILE_SRC))
+PATCH_FILE := $(DIST)/$(PKG_UPDATE_PATH)patch_list
+FORCE_UPDATE := components/components.list|Contents/MacOS/components/components.list
+
+#Example of environment variables to set before using make distribution:
+
+#Convenience variables:
+# SSH_SERVER=ftp.instantbird.org
+# SSH_USERNAME=buildbot
+# UPLOAD_PATH=/www/anonymous/nightly/$(BUILD_YEAR)/$(BUILD_MONTH)/$(BUILD_YEAR)-$(BUILD_MONTH)-$(BUILD_DAY)-$(BUILD_HOUR)-$(MOZ_APP_NAME)
+
+#Required to upload files:
+# UPLOAD_CMD=scp $(UPLOAD_FILES) $(SSH_USERNAME)@$(SSH_SERVER):$(UPLOAD_PATH)/
+# The UPLOAD_FILES variable is set by the build system to the (space separated)
+# list of local files that should be uploaded.
+#Optional:
+# PRE_UPLOAD_CMD=ssh $(SSH_USERNAME)@$(SSH_SERVER) mkdir -p $(UPLOAD_PATH)
+# POST_UPLOAD_CMD=ssh $(SSH_USERNAME)@$(SSH_SERVER) register_builds.php $(UPLOAD_PATH) $(MOZ_PKG_PLATFORM)
+
+# LIST_PREVIOUS_MAR_CMD=ssh $(SSH_USERNAME)@$(SSH_SERVER) previous_builds.php $(MOZ_PKG_PLATFORM)
+# This command should return a list of mar files.
+# Each line should use this format: <buildid>:<lang>:<path>/<filename>.mar
+# DOWNLOAD_MAR_CMD=scp $(SSH_USERNAME)@$(SSH_SERVER):/www/anonymous/$(MAR_FILE_SRC) $(MAR_FILE_DEST)
+# The MAR_FILE_SRC variable is set by the build system to a value returned by
+# the LIST_PREVIOUS_MAR_CMD command (format: <path>/<filename>.mar).
+# The MAR_FILE_DEST variable is set by the build system and indicates where
+# the file should be put on the local system.
+
+#If there's a symbol server:
+# SYMBOL_SERVER_HOST=symbols.instantbird.org
+# SYMBOL_SERVER_PATH=/www/instantbird/socorro/symbols
+# SYMBOL_SERVER_PORT=22
+# SYMBOL_SERVER_USER=buildbot
+
+distribution:
+ @$(MAKE) buildsymbols
+ @$(MAKE) -C im/installer libs installer
+ifdef ENABLE_TESTS
+ $(MAKE) xpcshell-tests
+endif
+ifdef MOZ_UPDATE_PACKAGING
+ $(MAKE) -C $(MOZDEPTH)/tools/update-packaging full-update PKG_INST_PATH=
+endif
+ifdef L10NBASEDIR
+ $(foreach locale,$(SHIPPED_LOCALES),$(MAKE) -C im/locales/ repack-$(locale) LOCALE_MERGEDIR=mergedir MOZ_MAKE_COMPLETE_MAR=$(MOZ_UPDATE_PACKAGING) ;)
+endif
+ifdef MOZ_UPDATE_PACKAGING
+ifdef LIST_PREVIOUS_MAR_CMD
+ rm -rf $(PREVIOUS_MAR_DIR) $(PATCH_FILE)
+ mkdir $(PREVIOUS_MAR_DIR)
+ touch $(PATCH_FILE)
+ $(foreach marline,$(shell $(LIST_PREVIOUS_MAR_CMD)),\
+ $(foreach MAR_FILE_SRC,$(shell echo $(marline) |cut -d : -f 3),\
+ $(foreach AB_CD,$(filter $(shell echo $(marline) |cut -d : -f 2),$(AB_CD) $(SHIPPED_LOCALES)),\
+ $(foreach buildid,$(shell echo $(marline) |cut -d : -f 1),\
+ mkdir -p $(PREVIOUS_MAR_DIR)/$(buildid) ; \
+ $(DOWNLOAD_MAR_CMD) ; \
+ echo "$(MAR_FILE_DEST),$(DIST)/$(COMPLETE_MAR),$(DIST)/$(PKG_UPDATE_PATH)$(PKG_UPDATE_BASENAME).partial.from-$(buildid).mar,$(FORCE_UPDATE)" >> $(PATCH_FILE) ;))))
+ PATH="$(realpath $(LIBXUL_DIST)/host/bin):$(PATH)" $(PYTHON) $(MOZILLA_SRCDIR)/tools/update-packaging/make_incremental_updates.py -f $(PATCH_FILE)
+endif
+endif
+ifdef SYMBOL_SERVER_HOST
+ @$(MAKE) uploadsymbols
+endif
+ifdef UPLOAD_CMD
+ $(MAKE) upload
+endif
+
+installer:
+ @$(MAKE) -C im/installer installer
+
+SHIPPED_LOCALES_FILE = $(topsrcdir)/im/locales/shipped-locales
+SHIPPED_LOCALES := $(shell if test -f $(SHIPPED_LOCALES_FILE); then cat $(SHIPPED_LOCALES_FILE); fi)
+
+package:
+ @$(MAKE) -C im/installer
+
+install::
+ @$(MAKE) -C im/installer install
+
+upload:
+ifdef UPLOAD_CMD
+ $(PRE_UPLOAD_CMD)
+ $(UPLOAD_CMD)
+ $(POST_UPLOAD_CMD)
+endif
+
+ib::
+ @$(MAKE) -C chat export libs
+ @$(MAKE) -C im libs
+
+endif # COMM_BUILD
new file mode 100644
--- /dev/null
+++ b/im/components/contentHandler.js
@@ -0,0 +1,70 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+
+const Ci = Components.interfaces;
+const Cc = Components.classes;
+const Cr = Components.results;
+
+// defined in nsIContentHandler.idl.
+const NS_ERROR_WONT_HANDLE_CONTENT = 0x805d0001;
+
+function contentHandler() {
+}
+contentHandler.prototype = {
+ classID: Components.ID("{fda46332-1b03-4940-a30c-0997445d8e34}"),
+
+ _xpcom_factory: {
+ createInstance: function ch_factory_ci(outer, iid) {
+ if (outer)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+ return gContentHandler.QueryInterface(iid);
+ }
+ },
+
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentHandler]),
+
+ // nsIContentHandler
+
+ handleContent: function ch_HandleContent(aContentType, aWindowContext,
+ aRequest) {
+ try {
+ if (!Cc["@mozilla.org/webnavigation-info;1"]
+ .getService(Ci.nsIWebNavigationInfo)
+ .isTypeSupported(aContentType, null))
+ throw NS_ERROR_WONT_HANDLE_CONTENT;
+ }
+ catch (e) {
+ throw NS_ERROR_WONT_HANDLE_CONTENT;
+ }
+
+ aRequest.QueryInterface(Ci.nsIChannel);
+
+ // Even though they are exposed (for OAuth dialogs), http and https
+ // requests should be redirected to the external browser.
+ if (!aRequest.URI.schemeIs("http") && !aRequest.URI.schemeIs("https"))
+ throw NS_ERROR_WONT_HANDLE_CONTENT;
+
+ Cc["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Ci.nsIExternalProtocolService)
+ .loadUrl(aRequest.URI);
+ aRequest.cancel(Cr.NS_BINDING_ABORTED);
+ },
+
+ // nsIFactory
+ createInstance: function ch_CI(outer, iid) {
+ if (outer != null)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+
+ return this.QueryInterface(iid);
+ },
+
+ lockFactory: function ch_lock(lock) {
+ // No-op.
+ }
+};
+var gContentHandler = new contentHandler();
+
+const NSGetFactory = XPCOMUtils.generateNSGetFactory([contentHandler]);
new file mode 100644
--- /dev/null
+++ b/im/components/contentHandler.manifest
@@ -0,0 +1,3 @@
+component {fda46332-1b03-4940-a30c-0997445d8e34} contentHandler.js
+contract @mozilla.org/uriloader/content-handler;1?type=text/html {fda46332-1b03-4940-a30c-0997445d8e34}
+contract @mozilla.org/uriloader/content-handler;1?type=text/plain {fda46332-1b03-4940-a30c-0997445d8e34}
new file mode 100644
--- /dev/null
+++ b/im/components/ibCommandLineHandler.js
@@ -0,0 +1,61 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource:///modules/imServices.jsm");
+Cu.import("resource:///modules/imXPCOMUtils.jsm");
+Cu.import("resource:///modules/ibCore.jsm");
+
+function ibCommandLineHandler() { }
+
+ibCommandLineHandler.prototype = {
+ handle: function clh_handle(cmdLine) {
+ if (cmdLine.handleFlag("preferences", false)) {
+ Core.showPreferences();
+ cmdLine.preventDefault = true;
+ return;
+ }
+
+ if (cmdLine.handleFlag("n", false)) {
+ Services.accounts.autoLoginStatus =
+ Ci.imIAccountsService.AUTOLOGIN_USER_DISABLED;
+ }
+
+ // Initialize the core only at the first real startup,
+ // not when clicking the dock.
+ if (cmdLine.state == cmdLine.STATE_INITIAL_LAUNCH) {
+ // If the core failed to init, don't show the buddy list
+ if (!Core.init())
+ cmdLine.preventDefault = true;
+#ifdef XP_MACOSX
+ else {
+ // If we have no reason to show the account manager and the
+ // buddy list is not shown because of the -silent flag, we
+ // should avoid an early exit.
+ // The code in nsAppStartup::Run won't start the event loop if
+ // we don't have at least one window or one call to
+ // enterLastWindowClosingSurvivalArea.
+ let as = Components.classes["@mozilla.org/toolkit/app-startup;1"]
+ .getService(Ci.nsIAppStartup);
+ as.enterLastWindowClosingSurvivalArea();
+ // We can exitLastWindowClosingSurvivalArea as soon as the
+ // load of our application provided hiddenWindow has begun.
+ executeSoon(function() { as.exitLastWindowClosingSurvivalArea(); });
+ }
+#endif
+ }
+ },
+
+ // 3 tabs here because there is a misalignment with only 2
+ helpInfo: " -n Disables auto-login.\n" +
+ " -preferences Open only the preferences window.\n" +
+ " -silent Do not open the contacts list.\n",
+
+ classDescription: "Instantbird Command Line Handler",
+ classID: Components.ID("{cd6763b7-df9a-4b64-9d06-2b77c755d9c1}"),
+ contractID: "@instantbird.org/command-line-handler;1",
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler])
+};
+
+const NSGetFactory = XPCOMUtils.generateNSGetFactory([ibCommandLineHandler]);
new file mode 100644
--- /dev/null
+++ b/im/components/ibCommandLineHandler.manifest
@@ -0,0 +1,3 @@
+component {cd6763b7-df9a-4b64-9d06-2b77c755d9c1} ibCommandLineHandler.js
+contract @instantbird.org/command-line-handler;1 {cd6763b7-df9a-4b64-9d06-2b77c755d9c1}
+category command-line-handler b-n @instantbird.org/command-line-handler;1
new file mode 100644
--- /dev/null
+++ b/im/components/ibConvStatsService.js
@@ -0,0 +1,841 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
+Cu.import("resource:///modules/imXPCOMUtils.jsm");
+Cu.import("resource:///modules/imServices.jsm");
+Cu.import("resource://gre/modules/osfile.jsm");
+
+const kNotificationsToObserve =
+ ["contact-added", "contact-removed","contact-status-changed",
+ "contact-display-name-changed", "contact-no-longer-dummy",
+ "contact-preferred-buddy-changed", "contact-moved",
+ "account-connected", "account-disconnected", "new-conversation",
+ "new-text", "conversation-closed", "prpl-quit"];
+
+// This is incremented when changes to the log sweeping code warrant rebuilding
+// the stats cache file.
+const gStatsCacheVersion = 2;
+
+XPCOMUtils.defineLazyGetter(this, "_newtab", function()
+ l10nHelper("chrome://instantbird/locale/newtab.properties")
+);
+
+XPCOMUtils.defineLazyGetter(this, "_instantbird", function()
+ l10nHelper("chrome://instantbird/locale/instantbird.properties")
+);
+
+// ConversationStats stored by id.
+// A PossibleConversation's id is its protocol, account, and name joined by "/", suffixed
+// with ".chat" for MUCs (identical to the log folder path for the conversation).
+var gStatsByConvId = {};
+
+// The message counts of a contact are the sums of the message counts of the
+// linked buddies.
+// This object serves as a cache for the total stats of contacts.
+// Initialized when gStatsByConvId is ready (i.e. all log files have been parsed
+// or it was loaded from the JSON cache file).
+var gStatsByContactId;
+
+// Recursively sweeps log folders and parses log files for conversation statistics.
+var gLogParser = {
+ _statsService: null,
+ _accountMap: null,
+ _accounts: [],
+ _logFolders: [],
+ inProgress: false,
+ error: false,
+
+ // The general path of a log is logs/prpl/account/conv/date.json.
+ // First, sweep the logs folder for prpl folders.
+ sweep: function(aStatsService) {
+ initLogModule("stats-service-log-sweeper", this);
+ this.inProgress = true;
+ delete this.error;
+ this._accounts = [];
+ this._logFolders = [];
+ this._statsService = aStatsService;
+ this._statsService._notifyObservers("log-sweeping", "ongoing");
+
+ this._accountMap = new Map();
+ let accounts = Services.accounts.getAccounts();
+ while (accounts.hasMoreElements()) {
+ let account = accounts.getNext();
+ this._accountMap.set(account.normalizedName, account);
+ }
+
+ let logsPath = OS.Path.join(OS.Constants.Path.profileDir, "logs");
+ let iterator = new OS.File.DirectoryIterator(logsPath);
+ iterator.nextBatch().then(
+ aEntries => {
+ iterator.close();
+ // Filter out any stray files (e.g. system files).
+ aEntries = aEntries.filter(function(e) e.isDir);
+ this._sweepPrpls(aEntries);
+ },
+ aError => {
+ iterator.close();
+ if (aError instanceof OS.File.Error && !aError.becauseNoSuchFile) {
+ Cu.reportError("Error while sweeping logs folder: " + logsPath + "\n" + aError);
+ this.error = true;
+ }
+ this._sweepingComplete();
+ });
+ },
+
+ _sweepingComplete: function() {
+ delete this.inProgress;
+ delete this._accountMap;
+ let statsService = this._statsService;
+ statsService._cacheAllStats(); // Flush stats to JSON cache.
+ statsService._convs.sort(statsService._sortComparator);
+ statsService._notifyObservers("log-sweeping", "done");
+ gStatsByContactId = {}; // Initialize stats cache for contacts.
+ },
+
+ // Sweep each prpl folder for account folders, and add them to this._accounts.
+ _sweepPrpls: function(aPrpls) {
+ if (!aPrpls.length)
+ this._sweepAccounts();
+ let path = aPrpls.shift().path;
+ let iterator = new OS.File.DirectoryIterator(path);
+ iterator.nextBatch().then(
+ aEntries => {
+ iterator.close();
+ // Filter out any stray files (e.g. system files).
+ aEntries = aEntries.filter(function(e) e.isDir);
+ this._accounts = this._accounts.concat(aEntries);
+ this._sweepPrpls(aPrpls);
+ },
+ aError => {
+ iterator.close();
+ Cu.reportError("Error while sweeping prpl folder: " + path + "\n" + aError);
+ this.error = true;
+ this._sweepPrpls(aPrpls);
+ });
+ },
+
+ // Sweep each account folder for conversation log folders, add them to this._logFolders.
+ _sweepAccounts: function() {
+ if (!this._accounts.length)
+ this._sweepLogFolders();
+ let path = this._accounts.shift().path;
+ let iterator = new OS.File.DirectoryIterator(path);
+ iterator.nextBatch().then(
+ aEntries => {
+ iterator.close();
+ // Filter out any stray files (e.g. system files).
+ aEntries = aEntries.filter(function(e) e.isDir);
+ this._logFolders = this._logFolders.concat(aEntries);
+ this._sweepAccounts();
+ },
+ aError => {
+ iterator.close();
+ Cu.reportError("Error while sweeping account folder: " + path + "\n" + aError);
+ this.error = true;
+ this._sweepAccounts();
+ });
+ },
+
+ // Sweep the log folders.
+ _sweepLogFolders: function() {
+ if (!this._logFolders.length)
+ this._sweepingComplete();
+ let path = this._logFolders.shift().path;
+ let iterator = new OS.File.DirectoryIterator(path);
+ let decoder = new TextDecoder();
+ iterator.forEach(aEntry => {
+ if (aEntry.name.endsWith(".json"))
+ return this._sweepJSONLog(aEntry.path, decoder);
+ return undefined;
+ }).then(
+ () => {
+ iterator.close();
+ this._sweepLogFolders();
+ },
+ aError => {
+ iterator.close();
+ Cu.reportError("Error while sweeping log folder: " + path + "\n" + aError);
+ this.error = true;
+ this._sweepLogFolders();
+ });
+ },
+
+ // Goes through a JSON log file and parses it for stats.
+ _sweepJSONLog: function(aLog, aDecoder) {
+ return OS.File.read(aLog).then(
+ aArray => {
+ // Try to parse the log file. If anything goes wrong here, the log file
+ // has likely been tampered with so we ignore it and move on.
+ try {
+ let lines = aDecoder.decode(aArray).split("\n");
+ // The first line is the header which identifies the conversation.
+ let header = JSON.parse(lines.shift());
+ let accountName = header.account;
+ let name = header.normalizedName;
+ if (!name) {
+ // normalizedName was added for IB 1.5, so we normalize
+ // manually if it is not found for backwards compatibility.
+ name = header.name;
+ let account = this._accountMap.get(accountName);
+ if (account)
+ name = account.normalize(name);
+ }
+ let id = getConversationId(header.protocol, accountName,
+ name, header.isChat);
+ if (!(id in gStatsByConvId))
+ gStatsByConvId[id] = new ConversationStats(id);
+ let stats = gStatsByConvId[id];
+ lines.pop(); // Ignore the final line break.
+ for (let line of lines) {
+ line = JSON.parse(line);
+ if (line.flags[0] == "system") // Ignore system messages.
+ continue;
+ line.flags[0] == "incoming" ?
+ ++stats.incomingCount : ++stats.outgoingCount;
+ }
+ let date = Date.parse(header.date);
+ if (date > stats.lastDate)
+ stats.lastDate = date;
+ delete stats._computedScore;
+ }
+ catch(e) {
+ this.WARN("Error parsing log file: " + aLog + "\n" + e);
+ }
+ },
+ aError => {
+ Cu.reportError("Error reading log file: " + aLog + "\n" + aError);
+ this.error = true;
+ });
+ }
+};
+
+function ConvStatsService() {
+ this._observers = [];
+}
+ConvStatsService.prototype = {
+ // Sorted list of conversations, stored as PossibleConversations.
+ _convs: [],
+ // PossibleConvFromContacts stored by id.
+ _contactsById: new Map(),
+ // Keys are account ids. Values are Maps of chat names to PossibleChats.
+ _chatsByAccountIdAndName: new Map(),
+ // Timer to update the stats cache.
+ // The cache is updated every 10 minutes, and on quitting.
+ _statsCacheUpdateTimer: null,
+ _statsCacheFilePath: null,
+
+ _init: function() {
+ let contacts = Services.contacts.getContacts();
+ for (let contact of contacts)
+ this._addContact(contact);
+ for (let notification of kNotificationsToObserve)
+ Services.obs.addObserver(this, notification, false);
+
+ // Read all our conversation stats from the cache.
+ this._statsCacheFilePath =
+ OS.Path.join(OS.Constants.Path.profileDir, "statsservicecache.json");
+ OS.File.read(this._statsCacheFilePath).then(function(aArray) {
+ try {
+ let {version: version, stats: stats} =
+ JSON.parse((new TextDecoder()).decode(aArray));
+ if (version !== gStatsCacheVersion) {
+ gLogParser.sweep(this);
+ return;
+ }
+ gStatsByConvId = stats;
+ for each (let stats in gStatsByConvId)
+ stats.__proto__ = ConversationStats.prototype;
+ gStatsByContactId = {};
+ }
+ catch (e) {
+ // Something unexpected was encountered in the file.
+ // (Maybe it was tampered with?) Rebuild the cache from logs.
+ Cu.reportError("Error while parsing conversation stats cache.\n" + e);
+ if (Services.prefs.getBoolPref("statsService.parseLogsForStats"))
+ gLogParser.sweep(this);
+ }
+ }.bind(this), function(aError) {
+ if (!aError.becauseNoSuchFile)
+ Cu.reportError("Error while reading conversation stats cache.\n" + aError);
+ if (Services.prefs.getBoolPref("statsService.parseLogsForStats"))
+ gLogParser.sweep(this);
+ }.bind(this));
+ },
+
+ _addContact: function(aContact) {
+ if (this._contactsById.has(aContact.id)) // Already added.
+ return;
+ let possibleConv = new PossibleConvFromContact(aContact);
+ let pos = this._getPositionToInsert(possibleConv, this._convs);
+ this._convs.splice(pos, 0, possibleConv);
+ this._contactsById.set(aContact.id, possibleConv);
+ },
+
+ _removeContact: function(aId) {
+ if (!this._contactsById.has(aId))
+ return;
+ this._convs.splice(
+ this._convs.indexOf(this._contactsById.get(aId)), 1);
+ this._contactsById.delete(aId);
+ },
+
+ // Queue of RoomInfo to be added.
+ _pendingChats: [],
+ // The last time an update notification was sent to observers.
+ _lastUpdateNotification: 0,
+ // Account ids from which chat room info has been requested.
+ // We send an update notification if this is empty after adding chat rooms.
+ _accountsRequestingRoomInfo: new Set(),
+ _addPendingChats: function() {
+ let begin = Date.now();
+ for (let time = 0; time < 15 && this._pendingChats.length;
+ time = Date.now() - begin) {
+ let chat = this._pendingChats.pop();
+ let accountId = chat.accountId;
+ let chatList = this._chatsByAccountIdAndName.get(accountId);
+ if (!chatList) {
+ chatList = new Map();
+ this._chatsByAccountIdAndName.set(accountId, chatList);
+ }
+ // If a chat is already added, we remove it and re-add to refresh.
+ else if (chatList.has(chat.name)) {
+ this._convs.splice(
+ this._convs.indexOf(chatList.get(chat.name)), 1);
+ }
+ let possibleConv = new PossibleChat(chat);
+ let pos = this._getPositionToInsert(possibleConv, this._convs);
+ this._convs.splice(pos, 0, possibleConv);
+ chatList.set(chat.name, possibleConv);
+ }
+ if (this._pendingChats.length)
+ executeSoon(this._addPendingChats.bind(this));
+ else
+ delete this._addingPendingChats;
+ let now = Date.now();
+ if ((!this._accountsRequestingRoomInfo.size && !this._pendingChats.length) ||
+ now - this._lastUpdateNotification > 500) {
+ this._notifyObservers("updated");
+ this._lastUpdateNotification = now;
+ }
+ },
+
+ _removeChatsForAccount: function(aAccId) {
+ if (!this._chatsByAccountIdAndName.has(aAccId))
+ return;
+ // Keep only convs that either aren't chats or have a different account id.
+ this._convs = this._convs.filter(function(c)
+ c.source != "chat" || c.accountId != aAccId);
+ this._chatsByAccountIdAndName.delete(aAccId);
+ this._pendingChats = this._pendingChats.filter(function(c) c.accountId != aAccId);
+ },
+
+ _getPositionToInsert: function(aPossibleConversation, aArrayToInsert) {
+ let end = aArrayToInsert.length;
+ // Avoid the binary search loop if aArrayToInsert was already sorted.
+ if (end == 0 ||
+ this._sortComparator(aPossibleConversation, aArrayToInsert[end - 1]) >= 0)
+ return end;
+ let start = 0;
+ while (start < end) {
+ let middle = Math.floor((start + end) / 2);
+ if (this._sortComparator(aPossibleConversation, aArrayToInsert[middle]) < 0)
+ end = middle;
+ else
+ start = middle + 1;
+ }
+ return end;
+ },
+
+ _sortComparator: function(aPossibleConvA, aPossibleConvB) {
+ let scoreA = aPossibleConvA.computedScore;
+ let scoreB = aPossibleConvB.computedScore;
+ // We want conversations with stats (both contacts and chats) to appear first,
+ // followed by contacts with no stats, and finally chats with no stats.
+ // Conversations with stats have a positive score.
+ // Contacts with no stats get a 0, and chats get -1.
+ let sign = function(x) x > 0 ? 1 : x < 0 ? -1 : 0;
+ return sign(scoreB) - sign(scoreA) ||
+ scoreB - scoreA ||
+ aPossibleConvB.statusType - aPossibleConvA.statusType ||
+ aPossibleConvA.lowerCaseName.localeCompare(aPossibleConvB.lowerCaseName);
+ },
+
+ _repositionConvsWithUpdatedStats: function() {
+ for (let conv of this._convsWithUpdatedStats) {
+ let currentPos = this._convs.indexOf(conv);
+ // If the conv is no longer in the list (perhaps the contact was removed),
+ // don't try to reposition it.
+ if (currentPos == -1)
+ continue;
+ this._convs.splice(currentPos, 1);
+ let newPos = this._getPositionToInsert(conv, this._convs);
+ this._convs.splice(newPos, 0, conv);
+ }
+ this._convsWithUpdatedStats.clear();
+ },
+
+ getFilteredConvs: function(aFilterStr) {
+ this._repositionConvsWithUpdatedStats();
+
+ // Duplicate this._convs to avoid modifying it while adding existing convs.
+ let filteredConvs = this._convs.slice(0);
+ let existingConvs = Services.conversations.getUIConversations().map(
+ function(uiConv) new ExistingConversation(uiConv));
+ for (let existingConv of existingConvs) {
+ let uiConv = existingConv.uiConv;
+ if (existingConv.isChat) {
+ let chatList = this._chatsByAccountIdAndName.get(uiConv.account.id);
+ if (chatList) {
+ let chat = chatList.get(uiConv.name);
+ if (chat)
+ filteredConvs.splice(filteredConvs.indexOf(chat), 1);
+ }
+ }
+ else {
+ let contact = uiConv.contact;
+ if (contact && this._contactsById.has(contact.id)) {
+ filteredConvs.splice(
+ filteredConvs.indexOf(this._contactsById.get(contact.id)), 1);
+ }
+ }
+ let pos = this._getPositionToInsert(existingConv, filteredConvs);
+ filteredConvs.splice(pos, 0, existingConv);
+ }
+ if (aFilterStr) {
+ let searchWords = aFilterStr.toLowerCase().split(/\s+/);
+ filteredConvs = filteredConvs.filter(function(c) {
+ let words = c.lowerCaseName.split(/\s+/);
+ return searchWords.every(function(s) {
+ return words.some(function(word) {
+ if (word.startsWith(s))
+ return true;
+ if (word.length && "#&+!@_*".indexOf(word[0]) != -1 &&
+ word.substring(1).startsWith(s))
+ return true;
+ return false;
+ });
+ });
+ });
+ }
+ return new nsSimpleEnumerator(filteredConvs);
+ },
+
+ _cacheAllStats: function() {
+ // Don't save anything to the JSON file until log sweeping is done. This is to
+ // ensure that a re-sweep is triggered on next startup if log sweeping could
+ // not complete.
+ if (gLogParser.inProgress)
+ return;
+ // Don't cache anything if we encountered an error during log sweeping, so
+ // a fresh log sweep is triggered on next startup.
+ if (gLogParser.error)
+ return;
+ // Don't save stats to disk if the user has disabled conversation logging.
+ if (!Services.prefs.getBoolPref("purple.logging.log_ims"))
+ return;
+ let encoder = new TextEncoder();
+ let objToWrite = {version: gStatsCacheVersion, stats: gStatsByConvId};
+ OS.File.writeAtomic(this._statsCacheFilePath,
+ encoder.encode(JSON.stringify(objToWrite)),
+ {tmpPath: this._statsCacheFilePath + ".tmp"});
+ if (this._statsCacheUpdateTimer) {
+ clearTimeout(this._statsCacheUpdateTimer);
+ delete this._statsCacheUpdateTimer;
+ }
+ },
+
+ _requestRoomInfo: function() {
+ let accounts = Services.accounts.getAccounts();
+ while (accounts.hasMoreElements()) {
+ let acc = accounts.getNext();
+ let id = acc.id;
+ if (acc.connected && acc.canJoinChat && (!this._chatsByAccountIdAndName.has(id) ||
+ acc.prplAccount.isRoomInfoStale)) {
+ // Discard any chat room data we already have.
+ this._removeChatsForAccount(id);
+ try {
+ acc.prplAccount.requestRoomInfo(function(aRoomInfo, aPrplAccount, aCompleted) {
+ if (aCompleted)
+ this._accountsRequestingRoomInfo.delete(acc.id);
+ this._pendingChats = this._pendingChats.concat(aRoomInfo);
+ if (this._addingPendingChats)
+ return;
+ this._addingPendingChats = true;
+ executeSoon(this._addPendingChats.bind(this));
+ }.bind(this));
+ this._accountsRequestingRoomInfo.add(acc.id);
+ } catch(e) {
+ if (e.result != Cr.NS_ERROR_NOT_IMPLEMENTED)
+ Cu.reportError(e);
+ continue;
+ }
+ }
+ }
+ },
+
+ addObserver: function(aObserver) {
+ if (this._observers.indexOf(aObserver) != -1)
+ return;
+ this._observers.push(aObserver);
+
+ if (gLogParser.inProgress)
+ aObserver.observe(this, "stats-service-log-sweeping", "ongoing");
+
+ this._repositionConvsWithUpdatedStats();
+
+ // We request chat lists from accounts when adding new observers.
+ this._requestRoomInfo();
+ },
+
+ removeObserver: function(aObserver) {
+ this._observers = this._observers.filter(function(o) o !== aObserver);
+ },
+
+ _notifyObservers: function(aTopic, aData) {
+ for each (let observer in this._observers) {
+ if ("observe" in observer) // Avoid failing on destructed XBL bindings.
+ observer.observe(this, "stats-service-" + aTopic, aData);
+ }
+ },
+
+ // Maps prplConversation ids to their ConversationStats objects.
+ _statsByPrplConvId: new Map(),
+ // Maps prplConversation ids to the corresponding PossibleConversations.
+ _convsByPrplConvId: new Map(),
+ // These will be repositioned to reflect their new scores when a newtab is opened.
+ _convsWithUpdatedStats: new Set(),
+ observe: function(aSubject, aTopic, aData) {
+ if (aTopic == "profile-after-change")
+ Services.obs.addObserver(this, "prpl-init", false);
+ else if (aTopic == "prpl-init") {
+ executeSoon(this._init.bind(this));
+ Services.obs.removeObserver(this, "prpl-init");
+ }
+ else if (aTopic == "prpl-quit") {
+ // Update the stats cache only if there was already an update scheduled.
+ if (this._statsCacheUpdateTimer)
+ this._cacheAllStats();
+ }
+ else if (aTopic == "new-text") {
+ if (aSubject.system) // We don't care about system messages.
+ return;
+
+ let conv = aSubject.conversation;
+ let stats = this._statsByPrplConvId.get(conv.id);
+ aSubject.outgoing ? ++stats.outgoingCount : ++stats.incomingCount;
+ stats.lastDate = Date.now();
+ // Ensure the score is recomputed next time it's used.
+ delete stats._computedScore;
+
+ let possibleConv = this._convsByPrplConvId.get(conv.id);
+ if (possibleConv) {
+ if (possibleConv.source == "contact" && gStatsByContactId)
+ delete gStatsByContactId[possibleConv._contactId];
+ this._convsWithUpdatedStats.add(possibleConv);
+ }
+
+ // Schedule a cache update in 10 minutes.
+ if (!this._statsCacheUpdateTimer) {
+ this._statsCacheUpdateTimer =
+ setTimeout(this._cacheAllStats.bind(this), 600000);
+ }
+ }
+ else if (aTopic == "new-conversation") {
+ let conv = aSubject;
+ let id = getConversationId(conv.account.protocol.normalizedName,
+ conv.account.normalizedName,
+ conv.normalizedName, conv.isChat);
+ if (!(id in gStatsByConvId))
+ gStatsByConvId[id] = new ConversationStats(id);
+ this._statsByPrplConvId.set(conv.id, gStatsByConvId[id]);
+
+ let possibleConv = null;
+ if (conv.buddy) {
+ // First .buddy is an imIAccountBuddy, second one is an imIBuddy.
+ let contact = conv.buddy.buddy.contact;
+ if (contact)
+ possibleConv = this._contactsById.get(contact.id);
+ }
+ else if (conv.isChat) {
+ let chatList = this._chatsByAccountIdAndName.get(conv.account.id);
+ if (chatList && chatList.has(conv.normalizedName))
+ possibleConv = chatList.get(conv.name);
+ }
+ this._convsByPrplConvId.set(conv.id, possibleConv);
+ }
+ else if (aTopic == "conversation-closed")
+ this._statsByPrplConvId.delete(aSubject.id);
+ else if (aTopic == "contact-no-longer-dummy") {
+ // Contact ID changed. aData is the old ID.
+ let id = aSubject.id;
+ let oldId = parseInt(aData, 10);
+ this._contactsById.set(id, this._contactsById.get(oldId));
+ this._contactsById.delete(oldId);
+ this._contactsById.get(id)._contactId = id;
+ return;
+ }
+ else if (aTopic == "contact-added")
+ this._addContact(aSubject);
+ else if (aTopic == "contact-removed")
+ this._removeContact(aSubject.id);
+ else if (aTopic.startsWith("contact")) {
+ // A change in the contact's status or display name may cause the
+ // order to change, so we simply remove and re-add it.
+ this._removeContact(aSubject.id);
+ this._addContact(aSubject);
+ }
+ else if (aTopic == "account-connected" &&
+ this._observers.length) {
+ // Ensure the existing newtabs have roomInfo for this account.
+ this._requestRoomInfo();
+ }
+ else if (aTopic == "account-disconnected") {
+ let id = aSubject.id;
+ this._accountsRequestingRoomInfo.delete(id);
+ this._removeChatsForAccount(id);
+ }
+ this._notifyObservers("updated");
+ },
+
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.ibIConvStatsService]),
+ classDescription: "ConvStatsService",
+ classID: Components.ID("{1d9be575-87a4-4f2f-b414-c67a560f29fd}"),
+ contractID: "@instantbird.org/conv-stats-service;1"
+};
+
+function getConversationId(aProtocol, aAccount, aConversation, aIsChat) {
+ // aProtocol, aAccount, aConversation must be normalizedNames.
+ let id = [aProtocol, aAccount, aConversation].join("/");
+ if (aIsChat)
+ id += ".chat";
+ return id;
+}
+
+function ConversationStats(aConvId = "", aLastDate = 0,
+ aIncomingCount = 0, aOutgoingCount = 0) {
+ this.id = aConvId;
+ this.lastDate = aLastDate;
+ this.incomingCount = aIncomingCount;
+ this.outgoingCount = aOutgoingCount;
+}
+ConversationStats.prototype = {
+ id: "",
+ lastDate: 0,
+ ONE_DAY: 24 * 60 * 60 * 1000,
+ get daysBefore() (Date.now() - this.lastDate) / this.ONE_DAY,
+ get msgCount() this.incomingCount + this.outgoingCount,
+ incomingCount: 0,
+ outgoingCount: 0,
+ get frequencyMultiplier()
+ this.outgoingCount / (this.incomingCount || 1),
+ get recencyMultiplier() {
+ let daysBefore = this.daysBefore;
+ if (daysBefore < 4)
+ return 1;
+ if (daysBefore < 14)
+ return 0.7;
+ if (daysBefore < 31)
+ return 0.5;
+ if (daysBefore < 90)
+ return 0.3;
+ return 0.1;
+ },
+ get computedScore() {
+ return this._computedScore || (this._computedScore =
+ this.msgCount * this.frequencyMultiplier * this.recencyMultiplier);
+ },
+ mergeWith: function(aOtherStats) {
+ let stats = new ConversationStats();
+ stats.lastDate = Math.max(this.lastDate, aOtherStats.lastDate);
+ stats.incomingCount = this.incomingCount + aOtherStats.incomingCount;
+ stats.outgoingCount = this.outgoingCount + aOtherStats.outgoingCount;
+ return stats;
+ }
+}
+
+let PossibleConversation = {
+ get displayName() this._displayName,
+ get lowerCaseName()
+ this._lowerCaseName || (this._lowerCaseName = this._displayName.toLowerCase()),
+ _isChat: false, // False by default. Extensions should override this.
+ get isChat() this._isChat,
+ get statusType() this._statusType,
+ get statusText() this._statusText,
+ get infoText() this._infoText,
+ get buddyIconFilename() this._buddyIconFilename,
+ QueryInterface: XPCOMUtils.generateQI([Ci.ibIPossibleConversation])
+};
+
+function PossibleConvFromContact(aContact) {
+ this._displayName = aContact.displayName;
+ this._statusType = aContact.statusType;
+ this._statusText = aContact.statusText;
+ this._contactId = aContact.id;
+}
+PossibleConvFromContact.prototype = {
+ __proto__: PossibleConversation,
+ get statusText() this._statusText,
+ get source() "contact",
+ get id() {
+ let buddy = this.contact.preferredBuddy;
+ return getConversationId(buddy.protocol.normalizedName,
+ buddy.preferredAccountBuddy.account.normalizedName,
+ buddy.normalizedName, false);
+ },
+ get buddyIds() {
+ let buddies = this.contact.getBuddies();
+ let ids = [];
+ for (let buddy of buddies) {
+ let accountbuddies = buddy.getAccountBuddies();
+ for (let accountbuddy of accountbuddies) {
+ ids.push(getConversationId(buddy.protocol.normalizedName,
+ accountbuddy.account.normalizedName,
+ accountbuddy.normalizedName, false));
+ }
+ }
+ return ids;
+ },
+ get lowerCaseName() {
+ if (!this._lowerCaseName) {
+ let buddies = this.contact.getBuddies();
+ let names = [b.displayName for (b of buddies)].join(" ");
+ this._lowerCaseName = names.toLowerCase();
+ }
+ return this._lowerCaseName;
+ },
+ get buddyIconFilename() this.contact.buddyIconFilename,
+ get infoText() {
+ let tagNames = this.contact.getTags().map(function(aTag) aTag.name);
+ tagNames.sort(function(a, b) a.toLowerCase().localeCompare(b.toLowerCase()));
+ return tagNames.join(", ");
+ },
+ get contact() Services.contacts.getContactById(this._contactId),
+ get account() this.contact.preferredBuddy.preferredAccountBuddy.account,
+ get computedScore() {
+ let contactId = this._contactId;
+ if (gStatsByContactId && gStatsByContactId[contactId])
+ return gStatsByContactId[contactId].computedScore;
+ // Contacts may have multiple buddies attached to them, so we sum their
+ // individual message counts before arriving at the final score.
+ let stats = new ConversationStats();
+ for (let id of this.buddyIds) {
+ let buddyStats = gStatsByConvId[id];
+ if (buddyStats)
+ stats = stats.mergeWith(buddyStats);
+ }
+ if (gStatsByContactId)
+ gStatsByContactId[contactId] = stats;
+ let score = stats.computedScore;
+ // We apply a negative bias if statusType / STATUS_AVAILABLE is less than 0.5
+ // (i.e. our status is less than or equal to STATUS_MOBILE), and a positive
+ // one otherwise.
+ score *= 0.5 + this.statusType / Ci.imIStatusInfo.STATUS_AVAILABLE;
+ if (!this.contact.canSendMessage)
+ score *= 0.75;
+ return score;
+ },
+ createConversation: function() this.contact.createConversation()
+};
+
+function PossibleChat(aRoomInfo) {
+ this._roomInfo = aRoomInfo;
+ let account = this.account;
+ this.id = getConversationId(account.protocol.normalizedName,
+ account.normalizedName,
+ account.normalize(aRoomInfo.name), true);
+}
+PossibleChat.prototype = {
+ get isChat() true,
+ get statusType() Ci.imIStatusInfo.STATUS_AVAILABLE,
+ get buddyIconFilename() "",
+ get displayName() this._roomInfo.name,
+ get lowerCaseName()
+ this._lowerCaseName || (this._lowerCaseName = this.displayName.toLowerCase()),
+ get statusText() {
+ return "(" + this._roomInfo.participantCount + ") " +
+ (this._roomInfo.topic || _instantbird("noTopic"));
+ },
+ get infoText() this.account.normalizedName,
+ get source() "chat",
+ get accountId() this._roomInfo.accountId,
+ get account() Services.accounts.getAccountById(this.accountId),
+ createConversation: function() {
+ this.account.joinChat(this._roomInfo.chatRoomFieldValues);
+ // Work around the fact that joinChat doesn't return the conv.
+ return Services.conversations
+ .getConversationByNameAndAccount(this._roomInfo.name,
+ this.account, true);
+ },
+ get computedScore() {
+ let stats = gStatsByConvId[this.id];
+ if (stats && stats.computedScore)
+ return stats.computedScore;
+ // Force chats without a score to the end of the list.
+ return -1;
+ },
+ QueryInterface: XPCOMUtils.generateQI([Ci.ibIPossibleConversation])
+};
+
+function ExistingConversation(aUIConv) {
+ this._convId = aUIConv.target.id;
+ let account = aUIConv.account;
+ this.id = getConversationId(account.protocol.normalizedName,
+ account.normalizedName,
+ aUIConv.normalizedName,
+ aUIConv.isChat);
+ this._displayName = aUIConv.title;
+ this._isChat = aUIConv.isChat;
+ if (aUIConv.isChat) {
+ this._statusText = aUIConv.topic || _instantbird("noTopic");
+ this._statusType = PossibleChat.prototype.statusType;
+ this._buddyIconFilename = "";
+ }
+ else {
+ let buddy = aUIConv.buddy;
+ if (buddy) {
+ this._statusType = buddy.statusType;
+ this._statusText = buddy.statusText;
+ this._buddyIconFilename = buddy.buddyIconFilename;
+ this._lowerCaseName = aUIConv.contact.getBuddies()
+ .map(b => b.displayName)
+ .join(" ").toLowerCase();
+ }
+ else {
+ this._statusType = Ci.imIStatusInfo.STATUS_UNKNOWN;
+ this._statusText = "";
+ this._buddyIconFilename = "";
+ }
+ }
+ this._infoText = _newtab("existingConv.infoText");
+}
+ExistingConversation.prototype = {
+ __proto__: PossibleConversation,
+ get source() "existing",
+ get uiConv() {
+ return Services.conversations.getUIConversation(Services.conversations
+ .getConversationById(this._convId));
+ },
+ get account() this.uiConv.account,
+ get computedScore() {
+ let stats = gStatsByConvId[this.id];
+ if (!stats) {
+ // Force chats without a score to the end of the list.
+ return this.isChat ? -1 : 0;
+ }
+ let score = stats.computedScore;
+ // Give existing chats a negative bias. It's unlikely the user wants to
+ // reopen them.
+ if (this.isChat)
+ score *= 0.8;
+ // We don't apply the status biasing that PossibleConvFromContact does because
+ // existing conversations are not as likely to be reopened as an available
+ // contact, but are more likely to be reopened than an offline contact.
+ // Averaging this out eliminates the status bias.
+ return score;
+ },
+ createConversation: function() this.uiConv.target
+};
+
+const NSGetFactory = XPCOMUtils.generateNSGetFactory([ConvStatsService]);
new file mode 100644
--- /dev/null
+++ b/im/components/ibConvStatsService.manifest
@@ -0,0 +1,3 @@
+component {1d9be575-87a4-4f2f-b414-c67a560f29fd} ibConvStatsService.js
+contract @instantbird.org/conv-stats-service;1 {1d9be575-87a4-4f2f-b414-c67a560f29fd}
+category profile-after-change ConvStatsService @instantbird.org/conv-stats-service;1
new file mode 100644
--- /dev/null
+++ b/im/components/ibDockBadge.js
@@ -0,0 +1,72 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource:///modules/imServices.jsm");
+
+XPCOMUtils.defineLazyServiceGetter(this, "MacDock",
+ "@mozilla.org/widget/macdocksupport;1",
+ "nsIMacDockSupport");
+
+function DockBadge() { }
+DockBadge.prototype = {
+ _badgeTimer: null,
+ _showDockBadgePrefName: "messenger.options.showUnreadCountInDock",
+ _getAttentionPrefName: "messenger.options.getAttentionOnNewMessages",
+ _showUnreadCount: function() {
+ MacDock.badgeText = this._unreadCount || "";
+ },
+ _displayUnreadCountInDockBadge: function() {
+ if (!Services.prefs.getBoolPref(this._showDockBadgePrefName))
+ return;
+
+ if (this._unreadCount == 1 &&
+ Services.prefs.getBoolPref(this._getAttentionPrefName)) {
+ // We use a timer because it looks better to add the dock
+ // badge only after the dock item has stopped jumping.
+ if (!this._badgeTimer)
+ this._badgeTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
+ this._badgeTimer.initWithCallback(this._showUnreadCount.bind(this),
+ 1000, Ci.nsITimer.TYPE_ONE_SHOT);
+ }
+ else
+ this._showUnreadCount();
+ },
+ _hideUnreadCountDockBadge: function() {
+ if (this._badgeTimer)
+ this._badgeTimer.cancel();
+ MacDock.badgeText = "";
+ },
+
+ observe: function(aSubject, aTopic, aData) {
+ switch (aTopic) {
+ case "profile-after-change":
+ Services.obs.addObserver(this, "unread-im-count-changed", false);
+ Services.prefs.addObserver(this._showDockBadgePrefName, this, false);
+ break;
+ case "nsPref:changed":
+ if (aData == this._showDockBadgePrefName) {
+ if (Services.prefs.getBoolPref(aData))
+ this._showUnreadCount();
+ else
+ this._hideUnreadCountDockBadge();
+ }
+ break;
+ case "unread-im-count-changed":
+ if (!(this._unreadCount = parseInt(aData)))
+ this._hideUnreadCountDockBadge();
+ else
+ this._displayUnreadCountInDockBadge();
+ break;
+ }
+ },
+
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
+ classDescription: "DockBadge",
+ classID: Components.ID("{8b1eb1be-a58c-450b-8250-c6d5ad9fe2fb}"),
+ contractID: "@instantbird.org/mac/dock-badge;1"
+};
+
+const NSGetFactory = XPCOMUtils.generateNSGetFactory([DockBadge]);
new file mode 100644
--- /dev/null
+++ b/im/components/ibDockBadge.manifest
@@ -0,0 +1,3 @@
+component {8b1eb1be-a58c-450b-8250-c6d5ad9fe2fb} ibDockBadge.js
+contract @instantbird.org/mac/dock-badge;1 {8b1eb1be-a58c-450b-8250-c6d5ad9fe2fb}
+category profile-after-change DockBadge @instantbird.org/mac/dock-badge;1
new file mode 100644
--- /dev/null
+++ b/im/components/ibIConvStatsService.idl
@@ -0,0 +1,40 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+#include "nsISimpleEnumerator.idl"
+#include "nsIObserver.idl"
+#include "imIStatusInfo.idl"
+
+interface ibIPossibleConversation;
+interface imIAccount;
+interface imIAccountBuddy;
+interface imIContact;
+
+[scriptable, uuid(1b495592-8512-4443-bcdb-49118f045e42)]
+interface ibIConvStatsService: nsISupports {
+ // Returns an enumerator of PossibleConversations which match the given filter string.
+ nsISimpleEnumerator getFilteredConvs(in AUTF8String aFilterStr);
+ // A stats-service-updated notification is fired when data has been updated.
+ void addObserver(in nsIObserver aObserver);
+ void removeObserver(in nsIObserver aObserver);
+};
+
+[scriptable, uuid(e7e5e7ba-203c-47ea-8174-55b5e5d8131f)]
+// Inherits from imIStatusInfo to avoid code duplication.
+interface ibIPossibleConversation: imIStatusInfo {
+ /* The source of the possible conversation. Possible values are:
+ * "contact" - From an imIContact.
+ * "existing" - From an imIConversation.
+ */
+ readonly attribute AUTF8String source;
+ readonly attribute imIAccount account;
+ // If the possible conversation is a chat, statusText will give its topic.
+ readonly attribute boolean isChat;
+ /* Provides additional info about the conversation depending on the source:
+ * "contact" - The contact's tags (comma separated).
+ * "existing" - Localized string existingConv.infoText (newtab.properties).
+ */
+ readonly attribute AUTF8String infoText;
+};
new file mode 100644
--- /dev/null
+++ b/im/components/ibStatusCommandLineHandler.js
@@ -0,0 +1,48 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {interfaces: Ci, utils: Cu} = Components;
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource:///modules/imServices.jsm");
+Cu.import("resource:///modules/imStatusUtils.jsm");
+
+function StatusCLH() { }
+StatusCLH.prototype = {
+ classDescription: "Instantbird Status Commandline Handler Component",
+ classID: Components.ID("{9da72063-b727-488d-9b3f-cc12e854ab33}"),
+ contractID: "@instantbird.org/status/clh;1",
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler]),
+
+ /** nsICommandLineHandler **/
+ handle: function(cmdLine) {
+ let statusIndex = cmdLine.findFlag("status", false);
+ if (statusIndex == -1 || cmdLine.length <= statusIndex + 1)
+ return;
+
+ let statusParam = cmdLine.getArgument(statusIndex + 1).toLowerCase();
+
+ // Remove the arguments since they've been handled.
+ cmdLine.removeArguments(statusIndex, statusIndex + 1);
+
+ // We're keeping the old status message here.
+ let us = Services.core.globalUserStatus;
+ us.setStatus(Status.toFlag(statusParam), us.statusText);
+
+ // Only perform the default action (i.e. loading the buddy list) if
+ // Instantbird is launched with a status flag.
+ if (cmdLine.state != Ci.nsICommandLine.STATE_INITIAL_LAUNCH)
+ cmdLine.preventDefault = true;
+ },
+
+ // Follow the guidelines in nsICommandLineHandler.idl for the help info
+ // specifically, flag descriptions should start at character 24, and lines
+ // should be wrapped at 72 characters with embedded newlines, and finally, the
+ // string should end with a newline.
+ helpInfo: " -status <status> Set the online status.\n" +
+ " <status> can be one of\n" +
+ " available, away, offline.\n"
+};
+
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([StatusCLH]);
new file mode 100644
--- /dev/null
+++ b/im/components/ibStatusCommandLineHandler.manifest
@@ -0,0 +1,3 @@
+component {9da72063-b727-488d-9b3f-cc12e854ab33} ibStatusCommandLineHandler.js
+contract @instantbird.org/status/clh;1 {9da72063-b727-488d-9b3f-cc12e854ab33}
+category command-line-handler m-status @instantbird.org/status/clh;1
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/Makefile.in
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+# Platform specific stuff
+ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
+OS_LIBS += shell32.lib
+RCFILE = resources.rc
+RESFILE = resources.res
+
+else
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+
+LOCAL_INCLUDES += $(MOZ_GTK2_CFLAGS)
+OS_LIBS += $(TK_LIBS) $(XLIBS)
+
+endif # gtk2
+endif # windows
+
+#USE_STATIC_LIBS = 1
+EXTRA_DSO_LDOPTS += $(XPCOM_GLUE_LDOPTS) $(MOZ_COMPONENT_NSPR_LIBS)
+#EXTRA_DSO_LDOPTS += \
+ $(XPCOM_GLUE_LDOPTS) \
+ $(NSPR_LIBS) \
+ $(NULL)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/content/mintrayr.js
@@ -0,0 +1,144 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource:///modules/imServices.jsm");
+
+var gMinTrayR = {
+ trayService: null,
+ _prefs: null,
+ get menu() document.getElementById("MinTrayR_context"),
+
+ load: function() {
+ window.removeEventListener("load", gMinTrayR.load, true);
+ gMinTrayR.init();
+ },
+ init: function() {
+ window.addEventListener("unload", this.uninit);
+
+ let node = document.getElementById("menu_FileQuitItem").cloneNode(true);
+ node.setAttribute('id', 'MinTrayR_' + node.id);
+ this.menu.appendChild(node);
+
+ window.addEventListener("TrayDblClick", this, true);
+ window.addEventListener("TrayClick", this, true);
+
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+ // Workaround for Linux, where mozilla ignores persisted window position.
+ // Need to capture window move and close events.
+ window.addEventListener("deactivate", this, true);
+ // Restore window position after restart.
+ let docElt = window.document.documentElement;
+ if (docElt.hasAttribute("storeScreenX"))
+ window.moveTo(docElt.getAttribute("storeScreenX"),
+ docElt.getAttribute("storeScreenY"));
+#endif
+#endif
+
+ this.trayService =
+ Components.classes['@tn123.ath.cx/trayservice;1']
+ .getService(Ci.trayITrayService);
+ this.trayService.watchMinimize(window);
+
+ this._prefs = Services.prefs.getBranch("extensions.mintrayr.")
+ .QueryInterface(Ci.nsIPrefBranch2);
+ this._prefs.addObserver("alwaysShowTrayIcon", this, false);
+
+ // Add a listener to minimize the window on startup once it has been
+ // fully created if the corresponding pref is set.
+ if (this._prefs.getBoolPref("startMinimized")) {
+ this._onfocus = function() {
+ if (this._prefs.getIntPref("minimizeon"))
+ this.minimize();
+ else
+ window.minimize();
+ window.removeEventListener("focus", this._onfocus);
+ }.bind(this);
+ window.addEventListener("focus", this._onfocus);
+ }
+
+ this.reinitWindow();
+ },
+
+ uninit: function() {
+ window.removeEventListener("unload", gMinTrayR.uninit, false);
+ gMinTrayR._prefs.removeObserver("alwaysShowTrayIcon", gMinTrayR);
+ },
+
+ observe: function(aSubject, aTopic, aData) {
+ this.reinitWindow();
+ },
+
+ reinitWindow: function() {
+ if (this._prefs.getBoolPref("alwaysShowTrayIcon") && !this._icon)
+ this._icon = this.trayService.createIcon(window);
+ else if (this._icon) {
+ this._icon.close();
+ delete this._icon;
+ }
+
+ if (!this.trayService.isWatchedWindow(window))
+ this.trayService.watchMinimize(window);
+ },
+
+ handleEvent: function(aEvent) {
+ if (aEvent.type == "TrayClick" && aEvent.button == 2) {
+ // Show the context menu, this occurs on a single right click.
+ this.menu.showPopup(document.documentElement,
+ aEvent.screenX, aEvent.screenY,
+ "context", "", "bottomleft");
+ }
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+ else if (aEvent.type == "deactivate") {
+ let docElt = window.document.documentElement;
+ docElt.setAttribute("storeScreenX", window.screenX);
+ docElt.setAttribute("storeScreenY", window.screenY);
+ }
+#endif
+#endif
+ else if (aEvent.button == 0 &&
+ (aEvent.type == "TrayDblClick" ||
+ this._prefs.getBoolPref("singleClickRestore"))) {
+ // Restore the buddy list, this is a single or a double left click.
+ this.toggle();
+ }
+ },
+
+ minimize: function MinTrayR_minimize() {
+ // This will also work with alwaysShow.
+ this.trayService.minimize(window, true);
+ },
+ restore: function MinTrayR_restore() {
+ // This will also work with alwaysShow.
+ this.trayService.restore(window);
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+ let docElt = window.document.documentElement;
+ window.moveTo(docElt.getAttribute("storeScreenX"),
+ docElt.getAttribute("storeScreenY"));
+#endif
+#endif
+ window.focus();
+ },
+ toggle: function MinTrayR_toggle() {
+ if (window.windowState == STATE_MINIMIZED) {
+ window.restore();
+ window.focus();
+ }
+ else if (!this._icon || this._icon.isMinimized) {
+ // this._icon is not set if the tray icon isn't always visible.
+ this.restore();
+ }
+ else
+ this.minimize();
+ },
+
+ setStatus: function MinTrayR_setStatus(aStatusParam) {
+ let us = Services.core.globalUserStatus;
+ us.setStatus(Status.toFlag(aStatusParam), us.statusText);
+ }
+};
+
+window.addEventListener("load", gMinTrayR.load, true);
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/content/mintrayr.xul
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % mintrayrDTD SYSTEM "chrome://instantbird/locale/mintrayr.dtd">
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %mintrayrDTD;
+ %instantbirdDTD;
+]>
+
+<overlay id="MinTrayR_overlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <script type="text/javascript" src="chrome://instantbird/content/mintrayr.js"/>
+
+ <keyset id="mainkeyset">
+ <key id="MinTrayR_minimize_key"
+ modifiers="&mintrayr.keys.minimize.modifiers;"
+ keycode="&mintrayr.keys.minimize.keycode;"
+ oncommand="gMinTrayR.minimize();"/>
+ </keyset>
+
+ <menupopup id="fileMenuPopup">
+ <menuitem id="MinTrayR_minimize"
+ label="&mintrayr.minimize;"
+ accesskey="&mintrayr.minimize.accesskey;"
+ tooltiptext="&mintrayr.minimize.tip;"
+ oncommand="gMinTrayR.minimize();"
+ key="MinTrayR_minimize_key"
+ insertbefore="menu_FileQuitItem"/>
+ </menupopup>
+
+ <popupset id="mainpopupset">
+ <menupopup id="MinTrayR_context">
+ <menuitem id="MinTrayR_available"
+ label="&available;"
+ accesskey="&available.accesskey;"
+ oncommand="gMinTrayR.setStatus('available');"/>
+ <menuitem id="MinTrayR_unavailable"
+ label="&unavailable;"
+ accesskey="&unavailable.accesskey;"
+ oncommand="gMinTrayR.setStatus('away');"/>
+ <menuitem id="MinTrayR_offline"
+ label="&offline;"
+ accesskey="&offline.accesskey;"
+ oncommand="gMinTrayR.setStatus('offline');"/>
+ <menuseparator id="MinTrayR_sep-top"/>
+ <menuitem id="MinTrayR_restore"
+ label="&mintrayr.restore;"
+ accesskey="&mintrayr.restore.accesskey;"
+ oncommand="gMinTrayR.restore();"/>
+ <menuseparator id="MinTrayR_sep-bottom"/>
+ </menupopup>
+ </popupset>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/jar.mn
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+instantbird.jar:
+% content instantbird %content/instantbird/
+* content/instantbird/mintrayr.js (content/mintrayr.js)
+ content/instantbird/mintrayr.xul (content/mintrayr.xul)
+% overlay chrome://instantbird/content/blist.xul chrome://instantbird/content/mintrayr.xul
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/moz.build
@@ -0,0 +1,32 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+SOURCES += [
+ 'trayModule.cpp',
+ 'trayToolkit.cpp',
+]
+
+# Platform specific stuff
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+ SOURCES += ['trayPlatformWin.cpp']
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2':
+ SOURCES += ['trayPlatformGtk2.cpp']
+
+IS_COMPONENT = True
+FORCE_SHARED_LIB = True
+
+LIBRARY_NAME = 'trayToolkit'
+
+XPIDL_SOURCES += [
+ 'trayIToolkit.idl',
+]
+
+XPIDL_MODULE = 'trayToolkit'
+
+EXPORTS += [
+ 'trayToolkit.h'
+]
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/resources.rc
@@ -0,0 +1,42 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#include<winver.h>
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+1 VERSIONINFO
+ FILEVERSION 0,8,0,0
+ PRODUCTVERSION 0,8,0,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "000004b0"
+ BEGIN
+ VALUE "FileDescription", "TrayToolkit XPCOM Components"
+ VALUE "FileVersion", "0, 9, 0, 0"
+ VALUE "InternalName", "TrayToolkit"
+ VALUE "LegalCopyright", "Copyright (C) 2008-2011 Nils Maier. MPL-Tri licensed"
+ VALUE "OriginalFilename", "trayToolkit.dll"
+ VALUE "ProductName", "MinTrayR Mozilla extension"
+ VALUE "ProductVersion", "0, 9, 0, 0"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0, 1200
+ END
+END
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayIToolkit.idl
@@ -0,0 +1,80 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "nsISupports.idl"
+
+interface nsIDOMWindow;
+
+[scriptable, uuid(e17d921c-4b3a-47b2-8283-cab425cc1a0c)]
+interface trayITrayIcon : nsISupports {
+
+ /**
+ * Associated DOM window
+ */
+ readonly attribute nsIDOMWindow window;
+
+ /**
+ * Window is minimized to tray
+ */
+ readonly attribute boolean isMinimized;
+
+ /**
+ * Indicates whether icon will be closed if window is restored
+ */
+ attribute boolean closeOnRestore;
+
+ /**
+ * Minimizes the window
+ */
+ void minimize();
+
+ /**
+ * Restores the window
+ */
+ void restore();
+
+ /**
+ * Closes the tray icon, restoring the window in the process
+ */
+ void close();
+};
+
+[scriptable, uuid(8fbd1a20-7abf-11dd-ad8b-0800200c9a66)]
+interface trayITrayService : nsISupports {
+
+ /**
+ * Creates a tray icon for window
+ */
+ trayITrayIcon createIcon(in nsIDOMWindow window, [optional] in boolean aCloseOnRestore);
+
+ /**
+ * Restores all windows from the tray
+ */
+ void restoreAll();
+
+ /**
+ * Watch a window, and if minimized send to tray
+ */
+ void watchMinimize(in nsIDOMWindow window);
+
+ /**
+ * unwatch a window again
+ */
+ void unwatchMinimize(in nsIDOMWindow window);
+
+ /**
+ * is the window watched
+ */
+ bool isWatchedWindow(in nsIDOMWindow window);
+
+ /**
+ * minimizes a window to the tray
+ */
+ void minimize(in nsIDOMWindow aWindow, [optional] in boolean aCloseOnRestore);
+
+ /**
+ * Restores a window from the tray
+ */
+ void restore(in nsIDOMWindow aWindow);
+};
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayModule.cpp
@@ -0,0 +1,35 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "mozilla/ModuleUtils.h"
+#include "nsIClassInfoImpl.h"
+
+#include "trayToolkit.h"
+
+
+// Need to import TrayServiceImpl from mintrayr so that the macro works
+using mintrayr::TrayServiceImpl;
+
+// Generic factory
+NS_GENERIC_FACTORY_CONSTRUCTOR(TrayServiceImpl)
+NS_DEFINE_NAMED_CID(TRAYITRAYSERVICE_IID);
+
+static const mozilla::Module::CIDEntry kTrayIIDs[] = {
+ { &kTRAYITRAYSERVICE_IID, true, 0, TrayServiceImplConstructor },
+ { 0 }
+};
+static const mozilla::Module::ContractIDEntry kTrayContracts[] = {
+ { TRAYSERVICE_CONTRACTID, &kTRAYITRAYSERVICE_IID },
+ { 0 }
+};
+static const mozilla::Module::CategoryEntry kTrayCategories[] = {
+ { 0 }
+};
+static const mozilla::Module kTrayModule = {
+ mozilla::Module::kVersion,
+ kTrayIIDs,
+ kTrayContracts,
+ kTrayCategories
+};
+NSMODULE_DEFN(trayModule) = &kTrayModule;
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayPlatform.h
@@ -0,0 +1,65 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Platform specific stuff
+ * Must be implemented for each platform
+ */
+
+#ifndef __TRAYPLATFORM_H
+#define __TRAYPLATFORM_H
+
+#include "xpcom-config.h"
+
+#include "nsCOMPtr.h"
+#include "nsStringAPI.h"
+
+#include "nsIDOMWindow.h"
+
+namespace mintrayr {
+
+class TrayIconImpl;
+
+namespace platform {
+
+/**
+ * Called when the service goes live
+ */
+void Init();
+
+/**
+ * Called when the service is destroyed
+ */
+void Destroy();
+
+/**
+ * Window should be watched
+ */
+NS_IMETHODIMP WatchWindow(nsIDOMWindow *aWindow);
+
+/**
+ * Window should be unwatched
+ */
+NS_IMETHODIMP UnwatchWindow(nsIDOMWindow *aWindow);
+
+/**
+ * Abstract helper class
+ * Encapsulates the platform specific initialization code and message processing
+ */
+class Icon {
+public:
+ virtual ~Icon() {}
+ virtual void Minimize() = 0;
+ virtual void Restore() = 0;
+};
+
+/**
+ * Factory
+ */
+Icon* CreateIcon(TrayIconImpl *aOwner, nsIDOMWindow* aWindow, const nsString& aTitle);
+
+} // namespace platform
+} // namespace mintrayr
+
+#endif
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayPlatformGtk2.cpp
@@ -0,0 +1,239 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "trayToolkit.h"
+#include "trayPlatformGtk2.h"
+
+#include "nsCOMPtr.h"
+#include "nsServiceManagerUtils.h"
+
+/* gtk_status_icon_set_tooltip was added in GTK+ 2.10 and deprecated in 2.16 */
+#if !GTK_CHECK_VERSION(2,16,0)
+#define gtk_status_icon_set_tooltip_text gtk_status_icon_set_tooltip
+#endif
+
+namespace mintrayr {
+namespace platform {
+
+#define XATOM(atom) static const Atom atom = XInternAtom(xev->xany.display, #atom, false)
+
+/**
+ * Helper: Gdk filter function to "watch" the window
+ */
+static
+GdkFilterReturn filterWindows(XEvent *xev, GdkEvent* event, nsIDOMWindow* window)
+{
+ XATOM(WM_DELETE_WINDOW);
+
+ if (!xev) {
+ return GDK_FILTER_CONTINUE;
+ }
+
+ switch (xev->type) {
+ case MapNotify:
+ {
+ nsCOMPtr<trayITrayService> traySvc(do_GetService(TRAYSERVICE_CONTRACTID));
+ traySvc->Restore(window);
+ }
+ break;
+
+ case UnmapNotify:
+ if (DoMinimizeWindow(window, kTrayOnMinimize)) {
+ return GDK_FILTER_REMOVE;
+ }
+ break;
+
+ case ClientMessage:
+ if (xev->xclient.data.l
+ && static_cast<Atom>(xev->xclient.data.l[0]) == WM_DELETE_WINDOW
+ && DoMinimizeWindow(window, kTrayOnClose)
+ ) {
+ return GDK_FILTER_REMOVE;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return GDK_FILTER_CONTINUE;
+}
+
+void Init() {}
+void Destroy() {}
+
+Icon* CreateIcon(TrayIconImpl *aOwner, nsIDOMWindow* aWindow, const nsString& aTitle)
+{
+ return new gtk2::Icon(aOwner, aWindow, aTitle);
+}
+
+NS_IMETHODIMP WatchWindow(nsIDOMWindow *aWindow)
+{
+ nsresult rv;
+
+ nsCOMPtr<nsIBaseWindow> baseWindow;
+ rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nativeWindow native = 0;
+ rv = baseWindow->GetParentNativeWindow(&native);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ GdkWindow *gdkWindow = gdk_window_get_toplevel(reinterpret_cast<GdkWindow*>(native));
+ if (!gdkWindow) {
+ return NS_ERROR_UNEXPECTED;
+ }
+ gdk_window_add_filter(gdkWindow, reinterpret_cast<GdkFilterFunc>(filterWindows), aWindow);
+
+
+ return NS_OK;
+}
+NS_IMETHODIMP UnwatchWindow(nsIDOMWindow *aWindow)
+{
+ nsresult rv;
+
+ nsCOMPtr<nsIBaseWindow> baseWindow;
+ rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nativeWindow native = 0;
+ rv = baseWindow->GetParentNativeWindow(&native);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ GdkWindow *gdkWindow = gdk_window_get_toplevel(reinterpret_cast<GdkWindow*>(native));
+ if (!gdkWindow) {
+ return NS_ERROR_UNEXPECTED;
+ }
+ gdk_window_remove_filter(gdkWindow, reinterpret_cast<GdkFilterFunc>(filterWindows), aWindow);
+
+ return NS_OK;
+}
+
+namespace gtk2 {
+
+Icon::Icon(TrayIconImpl *aIcon, nsIDOMWindow *aWindow, const nsString& aTitle)
+ : mStatusIcon(0), mGtkWindow(0), mGdkWindow(0), mIcon(aIcon)
+{
+ Init(aWindow, aTitle);
+}
+NS_IMETHODIMP Icon::Init(nsIDOMWindow *aWindow, const nsString& aTitle)
+{
+ nsresult rv;
+ nsCOMPtr<nsIBaseWindow> baseWindow;
+ rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nativeWindow native = 0;
+ rv = baseWindow->GetParentNativeWindow(&native);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ // Get the window
+ mGdkWindow = gdk_window_get_toplevel(reinterpret_cast<GdkWindow*>(native));
+ if (!mGdkWindow) {
+ return NS_ERROR_UNEXPECTED;
+ }
+
+ // Get the widget and gtk window
+ GtkWidget *widget;
+ gdk_window_get_user_data(mGdkWindow, reinterpret_cast<gpointer*>(&widget));
+ widget = gtk_widget_get_toplevel(widget);
+ mGtkWindow = reinterpret_cast<GtkWindow*>(widget);
+
+ // Set up tray icon
+ mStatusIcon = gtk_status_icon_new();
+
+ // Get the window icon and set it
+ GdkPixbuf *buf = gtk_window_get_icon(mGtkWindow);
+ if (buf) {
+ gtk_status_icon_set_from_pixbuf(mStatusIcon, buf);
+ } else {
+ const gchar *iconname = gtk_window_get_icon_name(mGtkWindow);
+ if (iconname)
+ gtk_status_icon_set_from_icon_name(mStatusIcon, iconname);
+ }
+
+ // Get and set the title
+ if (aTitle.IsEmpty()) {
+ gtk_status_icon_set_tooltip_text(mStatusIcon, gtk_window_get_title(mGtkWindow));
+ gtk_widget_add_events(widget, GDK_PROPERTY_CHANGE_MASK);
+ propertyEventId = g_signal_connect(mGtkWindow, "property-notify-event", G_CALLBACK(gtkPropertyEvent), this);
+ }
+ else {
+ NS_ConvertUTF16toUTF8 titleUTF8(aTitle);
+ gtk_status_icon_set_tooltip_text(mStatusIcon, reinterpret_cast<const char*>(titleUTF8.get()));
+ propertyEventId = 0;
+ }
+
+ // Add signals
+ g_signal_connect(G_OBJECT(mStatusIcon), "button-press-event", G_CALLBACK(gtkButtonEvent), this);
+ g_signal_connect(G_OBJECT(mStatusIcon), "button-release-event", G_CALLBACK(gtkButtonEvent), this);
+
+ // Make visible
+ gtk_status_icon_set_visible(mStatusIcon, 1);
+ return NS_OK;
+}
+
+Icon::~Icon()
+{
+ Restore();
+
+ if (mStatusIcon) {
+ gtk_status_icon_set_visible(mStatusIcon, 0);
+ g_object_unref(mStatusIcon);
+ }
+ if (propertyEventId) {
+ g_signal_handler_disconnect(mGtkWindow, propertyEventId);
+ }
+}
+
+void Icon::Restore()
+{
+ gdk_window_show(mGdkWindow);
+}
+
+void Icon::Minimize() {
+ // Hide the window
+ gdk_window_hide(mGdkWindow);
+}
+
+void Icon::buttonEvent(GdkEventButton *event)
+{
+ nsString eventName;
+ switch (event->type) {
+ case GDK_BUTTON_RELEASE: // use release, so that we don't duplicate events
+ eventName = NS_LITERAL_STRING("TrayClick");
+ break;
+ case GDK_2BUTTON_PRESS:
+ eventName = NS_LITERAL_STRING("TrayDblClick");
+ break;
+ case GDK_3BUTTON_PRESS:
+ eventName = NS_LITERAL_STRING("TrayTriClick");
+ break;
+ default:
+ return;
+ }
+
+ nsPoint pt((nscoord)(event->x + event->x_root), (nscoord)(event->y + event->y_root));
+
+ // Dispatch the event
+#define HASSTATE(x) (event->state & x ? true : false)
+ mIcon->DispatchMouseEvent(
+ eventName,
+ event->button - 1,
+ pt,
+ HASSTATE(GDK_CONTROL_MASK),
+ HASSTATE(GDK_MOD1_MASK),
+ HASSTATE(GDK_SHIFT_MASK)
+ );
+#undef HASSTATE
+}
+
+gboolean Icon::propertyEvent()
+{
+ gtk_status_icon_set_tooltip_text(mStatusIcon, gtk_window_get_title(mGtkWindow));
+ return FALSE;
+}
+
+} // namespace gtk2
+
+}} // namespaces
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayPlatformGtk2.h
@@ -0,0 +1,60 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef __TRAYPLATFORMWIN_H
+#define __TRAYPLATFORMWIN_H
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+#include <gtk/gtk.h>
+#include <gdk/gdk.h>
+
+#include "trayPlatform.h"
+
+#include "nsCOMPtr.h"
+
+#include "nsIDOMWindow.h"
+
+namespace mintrayr {
+namespace platform {
+namespace gtk2 {
+
+/**
+ * Helper class
+ * Encapsulates the Gtk2 specific initialization code and message processing
+ */
+class Icon : public platform::Icon {
+private:
+public:
+ GtkStatusIcon *mStatusIcon;
+ GtkWindow *mGtkWindow;
+ GdkWindow *mGdkWindow;
+ TrayIconImpl *mIcon;
+
+ Icon(TrayIconImpl *aOwner, nsIDOMWindow* aWindow, const nsString& aTitle);
+ virtual ~Icon();
+
+ virtual void Minimize();
+ virtual void Restore();
+
+private:
+ NS_IMETHOD Init(nsIDOMWindow *aWindow, const nsString& aTitle);
+
+ void buttonEvent(GdkEventButton *event);
+ static void gtkButtonEvent(GtkStatusIcon*, GdkEventButton *event, Icon *icon) {
+ icon->buttonEvent(event);
+ }
+ gboolean propertyEvent();
+ gulong propertyEventId;
+ static gboolean gtkPropertyEvent(GtkStatusIcon*, GdkEventProperty *event, Icon *icon) {
+ return icon->propertyEvent();
+ }
+
+};
+
+}}} // namespaces
+
+#endif
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayPlatformWin.cpp
@@ -0,0 +1,445 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "trayToolkit.h"
+#include "trayPlatformWin.h"
+
+namespace mintrayr {
+namespace platform {
+
+static const wchar_t kTrayMessage[] = L"_MINTRAYR_TrayMessageW";
+static const wchar_t kDOMWindow[] = L"_MINTRAYR_DOM";
+static const wchar_t kOldProc[] = L"_MINTRAYR_WRAPPER_OLD_PROC";
+static const wchar_t kWatch[] = L"_MINTRAYR_WATCH";
+static const wchar_t kIcon[] = L"_MINTRAYR_ICON";
+static const wchar_t kPlatformIcon[] = L"_MINTRAYR_PICON";
+
+typedef BOOL (WINAPI *pChangeWindowMessageFilter)(UINT message, DWORD dwFlag);
+#ifndef MGSFLT_ADD
+ // Not a Vista SDK
+ # define MSGFLT_ADD 1
+ # define MSGFLT_REMOVE 2
+#endif
+
+static UINT WM_TASKBARCREATED = 0;
+static UINT WM_TRAYMESSAGE = 0;
+
+/**
+ * Helper function that will allow us to receive some broadcast messages on Vista
+ * (We need to bypass that filter if we run as Administrator, but the orginating process
+ * has less priviledges)
+ */
+static void AdjustMessageFilters(UINT filter)
+{
+ HMODULE user32 = LoadLibraryW(L"user32.dll");
+ if (user32 != 0) {
+ pChangeWindowMessageFilter changeWindowMessageFilter =
+ reinterpret_cast<pChangeWindowMessageFilter>(GetProcAddress(
+ user32,
+ "ChangeWindowMessageFilter"
+ ));
+ if (changeWindowMessageFilter != 0) {
+ changeWindowMessageFilter(WM_TASKBARCREATED, filter);
+ }
+ FreeLibrary(user32);
+ }
+}
+
+/**
+ * Helper class to get Windows Version information
+ */
+class OSVersionInfo : public OSVERSIONINFOEXW
+{
+public:
+ OSVersionInfo() {
+ dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
+ ::GetVersionExW(reinterpret_cast<LPOSVERSIONINFOW>(this));
+ }
+ bool isVistaOrLater() {
+ return dwMajorVersion >= 6;
+ }
+};
+
+/**
+ * Helper: We need to get the DOMWindow from the hwnd
+ */
+static bool DoMinimizeWindowWin(HWND hwnd, eMinimizeActions action)
+{
+ nsIDOMWindow *window = reinterpret_cast<nsIDOMWindow*>(::GetPropW(hwnd, kDOMWindow));
+ if (window == 0) {
+ return false;
+ }
+ if (::GetPropW(hwnd, kWatch) == (HANDLE)0x2) {
+ return true;
+ }
+ return DoMinimizeWindow(window, action);
+}
+
+/**
+ * Helper: Subclassed Windows WNDPROC
+ */
+static LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ using win::Icon;
+
+ if (::GetPropW(hwnd, kWatch) > (HANDLE)0x0) {
+ // Watcher stuff
+
+ switch (uMsg) {
+ case WM_WINDOWPOSCHANGING: {
+ /* XXX Fix this bit to something more reasonable
+ The following code kinda replicates the way mozilla gets the window state.
+ We intensionally "hide" the SW_SHOWMINIMIZED here.
+ This indeed might cause some side effects, but if it didn't we couldn't open
+ menus due to bugzilla #435848,.
+ This might defeat said bugfix completely reverting to old behavior, but only when we're active, of course.
+ */
+ WINDOWPOS *wp = reinterpret_cast<WINDOWPOS*>(lParam);
+ if (wp == 0) {
+ goto WndProcEnd;
+ }
+ if (wp->flags & SWP_FRAMECHANGED && ::IsWindowVisible(hwnd)) {
+ WINDOWPLACEMENT pl;
+ pl.length = sizeof(WINDOWPLACEMENT);
+ ::GetWindowPlacement(hwnd, &pl);
+ if (pl.showCmd == SW_SHOWMINIMIZED) {
+ return 0;
+ }
+ }
+ break;
+ }
+ case WM_WINDOWPOSCHANGED: {
+ /* XXX Fix this bit to something more reasonable
+ The following code kinda replicates the way mozilla gets the window state.
+ We intensionally "hide" the SW_SHOWMINIMIZED here.
+ This indeed might cause some side effects, but if it didn't we couldn't open
+ menus due to bugzilla #435848,.
+ This might defeat said bugfix completely reverting to old behavior, but only when we're active, of course.
+ */
+ WINDOWPOS *wp = reinterpret_cast<WINDOWPOS*>(lParam);
+ if (wp == 0) {
+ goto WndProcEnd;
+ }
+ if (wp->flags & SWP_SHOWWINDOW) {
+ // Shown again, unexpectedly that is, so release
+ Icon *me = reinterpret_cast<Icon*>(GetPropW(hwnd, kPlatformIcon));
+ if (me == 0 || me->mOwnerIcon == 0 || me->mOwnerIcon->IsClosed()) {
+ goto WndProcEnd;
+ }
+ me->mOwnerIcon->Restore();
+ }
+ else if (wp->flags & SWP_FRAMECHANGED && ::IsWindowVisible(hwnd)) {
+ WINDOWPLACEMENT pl;
+ pl.length = sizeof(WINDOWPLACEMENT);
+ ::GetWindowPlacement(hwnd, &pl);
+ if (pl.showCmd == SW_SHOWMINIMIZED) {
+ if (DoMinimizeWindowWin(hwnd, kTrayOnMinimize)) {
+ // We're active, ignore
+ return 0;
+ }
+ }
+ }
+ break;
+ } // case WM_WINDOWPOSCHANGED
+ case WM_NCLBUTTONDOWN:
+ case WM_NCLBUTTONUP:
+ // Frame button clicked
+ if (wParam == HTCLOSE && DoMinimizeWindowWin(hwnd, kTrayOnClose)) {
+ return TRUE;
+ }
+ break;
+
+ case WM_SYSCOMMAND:
+ // Window menu
+ if (wParam == SC_CLOSE && DoMinimizeWindowWin(hwnd, kTrayOnClose)) {
+ return 0;
+ }
+ break;
+ }
+ }
+
+ if (::GetPropW(hwnd, kIcon) == (HANDLE)0x1) {
+ // Icon stuff
+
+ // This is a badly documented custom broadcast message by explorer
+ if (uMsg == WM_TASKBARCREATED) {
+ // Try to get the platform icon
+ Icon *me = reinterpret_cast<Icon*>(GetPropW(hwnd, kPlatformIcon));
+ if (me == 0 || me->mOwnerIcon == 0 || me->mOwnerIcon->IsClosed()) {
+ goto WndProcEnd;
+ }
+ // The taskbar was (re)created. Add ourselves again.
+ Shell_NotifyIconW(NIM_ADD, &me->mIconData);
+ }
+
+ // We got clicked. How exciting, isn't it.
+ else if (uMsg == WM_TRAYMESSAGE) {
+ nsString eventName;
+ PRUint16 button = 0;
+ switch (LOWORD(lParam)) {
+ case WM_LBUTTONUP:
+ case WM_MBUTTONUP:
+ case WM_RBUTTONUP:
+ case WM_CONTEXTMENU:
+ case NIN_KEYSELECT:
+ eventName = NS_LITERAL_STRING("TrayClick");
+ break;
+ case WM_LBUTTONDBLCLK:
+ case WM_MBUTTONDBLCLK:
+ case WM_RBUTTONDBLCLK:
+ eventName = NS_LITERAL_STRING("TrayDblClick");
+ break;
+ }
+ switch (LOWORD(lParam)) {
+ case WM_LBUTTONUP:
+ case WM_LBUTTONDBLCLK:
+ button = 0;
+ break;
+ case WM_MBUTTONUP:
+ case WM_MBUTTONDBLCLK:
+ button = 1;
+ break;
+ case WM_RBUTTONUP:
+ case WM_RBUTTONDBLCLK:
+ case WM_CONTEXTMENU:
+ case NIN_KEYSELECT:
+ button = 2;
+ break;
+ }
+ if (eventName.IsEmpty() == false) {
+ POINT wpt;
+ if (GetCursorPos(&wpt) == TRUE) {
+ nsPoint pt((nscoord)wpt.x, (nscoord)wpt.y);
+
+ bool ctrlKey = (::GetKeyState(VK_CONTROL) & 0x8000) != 0;
+ bool altKey = (::GetKeyState(VK_MENU) & 0x8000) != 0;
+ bool shiftKey = (::GetKeyState(VK_SHIFT) & 0x8000) != 0;
+
+ // SFW/PM is a win32 hack, so that the context menu is hidden when loosing focus.
+ ::SetForegroundWindow(hwnd);
+
+ // Try to get the platform icon
+ Icon *me = reinterpret_cast<Icon*>(GetPropW(hwnd, kPlatformIcon));
+ if (me != 0 && me->mOwnerIcon != 0 && !me->mOwnerIcon->IsClosed()) {
+ me->mOwnerIcon->DispatchMouseEvent(eventName, button, pt, ctrlKey, altKey, shiftKey);
+ }
+
+ ::PostMessage(hwnd, WM_NULL, 0, 0L);
+ }
+ }
+ return 0;
+ }
+
+ // Window title changed
+ else if (uMsg == WM_SETTEXT) {
+ // Try to get the platform icons
+ Icon *me = reinterpret_cast<Icon*>(GetPropW(hwnd, kPlatformIcon));
+ if (me == 0 || me->mOwnerIcon == 0 || me->mOwnerIcon->IsClosed()) {
+ goto WndProcEnd;
+ }
+
+ // First, let the original wndproc process this message,
+ // so that we may query the thing afterwards ;)
+ // this is required because we cannot know the encoding of this message for sure ;)
+ LRESULT rv;
+ WNDPROC oldWindowProc = reinterpret_cast<WNDPROC>(::GetPropW(hwnd, kOldProc));
+ if (oldWindowProc != 0) {
+ rv = CallWindowProcW(oldWindowProc, hwnd, uMsg, wParam, lParam);
+ }
+ else {
+ rv = DefWindowProcW(hwnd, uMsg, wParam, lParam);
+ }
+
+ if (::GetWindowTextW(hwnd, me->mIconData.szTip, 128) != 0) {
+ me->mIconData.szTip[128] = '\0';
+ Shell_NotifyIconW(NIM_MODIFY, &me->mIconData);
+ }
+ return rv;
+ }
+ }
+
+WndProcEnd:
+ // Call the old WNDPROC or at lest DefWindowProc
+ WNDPROC oldProc = reinterpret_cast<WNDPROC>(::GetPropW(hwnd, kOldProc));
+ if (oldProc != 0) {
+ return ::CallWindowProcW(oldProc, hwnd, uMsg, wParam, lParam);
+ }
+ return ::DefWindowProcW(hwnd, uMsg, wParam, lParam);
+}
+
+static void SetupWnd(HWND hwnd, nsIDOMWindow *aWindow)
+{
+ if (::GetPropW(hwnd, kOldProc) == 0) {
+ ::SetPropW(hwnd, kDOMWindow, reinterpret_cast<HANDLE>(aWindow));
+ WNDPROC oldProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtrW(hwnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(WndProc)));
+ ::SetPropW(hwnd, kOldProc, reinterpret_cast<HANDLE>(oldProc));
+ }
+}
+
+void Init()
+{
+ // Get TaskbarCreated
+ WM_TASKBARCREATED = RegisterWindowMessageW(L"TaskbarCreated");
+ // We register this as well, as we cannot know which WM_USER values are already taken
+ WM_TRAYMESSAGE = RegisterWindowMessageW(kTrayMessage);
+
+ // Vista (Administrator) needs some love, or else we won't receive anything due to UIPI
+ if (OSVersionInfo().isVistaOrLater()) {
+ AdjustMessageFilters(MSGFLT_ADD);
+ }
+}
+void Destroy() {
+ // Vista (Administrator) needs some unlove, see c'tor
+ if (OSVersionInfo().isVistaOrLater()) {
+ AdjustMessageFilters(MSGFLT_REMOVE);
+ }
+}
+
+Icon* CreateIcon(TrayIconImpl *aOwner, nsIDOMWindow* aWindow, const nsString& aTitle)
+{
+ return new win::Icon(aOwner, aWindow, aTitle);
+}
+
+NS_IMETHODIMP WatchWindow(nsIDOMWindow *aWindow)
+{
+ nsresult rv;
+
+ nsCOMPtr<nsIBaseWindow> baseWindow;
+ rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nativeWindow native = 0;
+ rv = baseWindow->GetParentNativeWindow(&native);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ HWND hwnd = reinterpret_cast<HWND>(native);
+ SetupWnd(hwnd, aWindow);
+ ::SetPropW(hwnd, kWatch, reinterpret_cast<HANDLE>(0x1));
+
+ return NS_OK;
+}
+NS_IMETHODIMP UnwatchWindow(nsIDOMWindow *aWindow)
+{
+ nsresult rv;
+
+ nsCOMPtr<nsIBaseWindow> baseWindow;
+ rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nativeWindow native = 0;
+ rv = baseWindow->GetParentNativeWindow(&native);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ HWND hwnd = reinterpret_cast<HWND>(native);
+ ::RemovePropW(hwnd, kWatch);
+
+ return NS_OK;
+}
+
+namespace win {
+
+Icon::Icon(TrayIconImpl *aIcon, nsIDOMWindow *aWindow, const nsString& aTitle)
+ : mOwnerIcon(aIcon)
+{
+ Init(aWindow, aTitle);
+}
+NS_IMETHODIMP Icon::Init(nsIDOMWindow *aWindow, const nsString& aTitle)
+{
+ nsresult rv;
+ nsCOMPtr<nsIBaseWindow> baseWindow;
+ rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nativeWindow native = 0;
+ rv = baseWindow->GetParentNativeWindow(&native);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ mWnd = reinterpret_cast<HWND>(native);
+ SetupWnd(mWnd, aWindow);
+
+ // Hook window
+ ::SetPropW(mWnd, kIcon, reinterpret_cast<HANDLE>(0x1));
+
+ // Init the icon data according to MSDN
+ ZeroMemory(&mIconData, sizeof(mIconData));
+ mIconData.cbSize = sizeof(mIconData);
+
+ // Copy the title
+ lstrcpynW(mIconData.szTip, aTitle.get(), 127);
+ mIconData.szTip[128] = '\0'; // Better be safe than sorry :p
+
+ // Get the window icon
+ HICON icon = reinterpret_cast<HICON>(::SendMessageW(mWnd, WM_GETICON, ICON_SMALL, 0));
+ if (icon == 0) {
+ // Alternative method. Get from the window class
+ icon = reinterpret_cast<HICON>(::GetClassLongPtrW(mWnd, GCLP_HICONSM));
+ }
+ // Alternative method: get the first icon from the main module (executable image of the process)
+ if (icon == 0) {
+ icon = ::LoadIcon(GetModuleHandleW(0), MAKEINTRESOURCE(0));
+ }
+ // Alternative method. Use OS default icon
+ if (icon == 0) {
+ icon = ::LoadIcon(0, IDI_APPLICATION);
+ }
+ mIconData.hIcon = icon;
+
+ // Set the rest of the members
+ mIconData.hWnd = mWnd;
+ mIconData.uCallbackMessage = WM_TRAYMESSAGE;
+ mIconData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
+ mIconData.uVersion = 5;
+
+ // Install the icon
+ ::Shell_NotifyIconW(NIM_ADD, &mIconData);
+ ::Shell_NotifyIconW(NIM_SETVERSION, &mIconData);
+
+ ::SetPropW(mWnd, kIcon, reinterpret_cast<HANDLE>(0x1));
+ ::SetPropW(mWnd, kPlatformIcon, reinterpret_cast<HANDLE>(this));
+
+ return NS_OK;
+}
+
+Icon::~Icon()
+{
+ Restore();
+
+ // Disable message handling
+ ::RemovePropW(mWnd, kIcon);
+ ::RemovePropW(mWnd, kPlatformIcon);
+
+ // Remove the icon
+ ::Shell_NotifyIconW(NIM_DELETE, &mIconData);
+
+ mOwnerIcon = 0;
+}
+
+void Icon::Restore()
+{
+ // Show the window again
+ ::ShowWindow(mWnd, SW_SHOW);
+
+ // If it was minimized then restore it as well
+ if (::IsIconic(mWnd)) {
+ ::ShowWindow(mWnd, SW_RESTORE);
+ // Try to grab focus
+ ::SetForegroundWindow(mWnd);
+ }
+}
+
+void Icon::Minimize() {
+ // We need to get a minimize through.
+ // Otherwise the SFW/PM hack won't work
+ // However we need to protect against the watcher watching this
+ HANDLE watch = ::GetPropW(mWnd, kWatch);
+ ::SetPropW(mWnd, kWatch, (HANDLE)(0x2));
+ ::ShowWindow(mWnd, SW_MINIMIZE);
+ ::SetPropW(mWnd, kWatch, watch);
+
+ ::ShowWindow(mWnd, SW_HIDE);
+}
+
+} // namespace win
+
+}} // namespaces
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayPlatformWin.h
@@ -0,0 +1,51 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef __TRAYPLATFORMWIN_H
+#define __TRAYPLATFORMWIN_H
+
+/**
+ * Windows specific implementation
+ */
+
+#ifdef _WIN32_IE
+# undef _WIN32_IE
+#endif
+#define _WIN32_IE 0x0600 // We want more features
+#include <windows.h>
+#include <shellapi.h>
+
+#include "trayPlatform.h"
+
+#include "nsCOMPtr.h"
+
+#include "nsIDOMWindow.h"
+
+namespace mintrayr {
+namespace platform {
+namespace win {
+
+/**
+ * Helper class
+ * Encapsulates the Windows specific initialization code and message processing
+ */
+class Icon : public platform::Icon {
+private:
+public:
+ HWND mWnd;
+ NOTIFYICONDATAW mIconData;
+ TrayIconImpl *mOwnerIcon;
+
+ Icon(TrayIconImpl *aOwner, nsIDOMWindow* aWindow, const nsString& aTitle);
+ virtual ~Icon();
+
+ virtual void Minimize();
+ virtual void Restore();
+private:
+ NS_IMETHOD Init(nsIDOMWindow *aWindow, const nsString& aTitle);
+};
+
+}}} // namespaces
+
+#endif
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayToolkit.cpp
@@ -0,0 +1,441 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "trayToolkit.h"
+#include "trayPlatform.h"
+
+#include "nsCOMPtr.h"
+#include "nsStringAPI.h"
+#include "nsServiceManagerUtils.h"
+
+#include "nsIDOMWindow.h"
+#include "nsIDOMDocument.h"
+
+#include "nsIDOMEvent.h"
+#include "nsIDOMEventTarget.h"
+#include "nsIDOMMouseEvent.h"
+
+#include "nsIWebNavigation.h"
+
+#include "nsIInterfaceRequestorUtils.h"
+#include "nsIObserverService.h"
+
+#include "nsIPrefService.h"
+#include "nsIPrefBranch2.h"
+
+#ifdef WIN32
+#define strcasecmp stricmp
+#endif
+
+namespace mintrayr {
+
+bool DoMinimizeWindow(nsIDOMWindow *window, eMinimizeActions action)
+{
+ if (window == 0) {
+ return false;
+ }
+
+ nsCOMPtr<nsIPrefBranch2> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
+ if (prefs) {
+ PRInt32 whenToMinimize = 0;
+ prefs->GetIntPref("extensions.mintrayr.minimizeon", &whenToMinimize);
+ if ((whenToMinimize & action) == 0) {
+ return false;
+ }
+ }
+
+ nsresult rv;
+ nsCOMPtr<trayITrayService> traySvc(do_GetService(TRAYSERVICE_CONTRACTID, &rv));
+ if (NS_SUCCEEDED(rv)) {
+ traySvc->Minimize(window, true);
+ }
+ return NS_SUCCEEDED(rv);
+}
+
+/**
+ * Helper: Get the base window for a DOM window
+ */
+NS_IMETHODIMP GetBaseWindow(nsIDOMWindow *aWindow, nsIBaseWindow **aBaseWindow)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+ NS_ENSURE_ARG_POINTER(aBaseWindow);
+
+ nsresult rv;
+
+ nsCOMPtr<nsIWebNavigation> webNav = do_GetInterface(aWindow, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(webNav, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ *aBaseWindow = baseWindow;
+ NS_IF_ADDREF(*aBaseWindow);
+ return NS_OK;
+}
+
+/**
+ * Helper: Dispatch a trusted general event
+ */
+NS_IMETHODIMP DispatchTrustedEvent(nsIDOMWindow *aWindow, const nsAString& aEventName)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+
+ nsresult rv;
+
+ nsCOMPtr<nsIDOMDocument> domDocument;
+ rv = aWindow->GetDocument(getter_AddRefs(domDocument));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(domDocument));
+ NS_ENSURE_TRUE(target, NS_ERROR_INVALID_ARG);
+
+ nsCOMPtr<nsIDOMEvent> event;
+ rv = domDocument->CreateEvent(NS_LITERAL_STRING("Events"), getter_AddRefs(event));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ rv = event->InitEvent(aEventName, false, true);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ event->SetTrusted(true);
+
+ bool dummy;
+ return target->DispatchEvent(event, &dummy);
+}
+
+/* TrayIconImpl */
+
+NS_IMPL_ISUPPORTS2(TrayIconImpl, trayITrayIcon, nsIDOMEventListener)
+
+NS_IMETHODIMP TrayIconImpl::GetWindow(nsIDOMWindow **aWindow)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+ *aWindow = mWindow;
+ NS_ADDREF(*aWindow);
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayIconImpl::GetIsMinimized(bool *aIsMinimized)
+{
+ NS_ENSURE_ARG_POINTER(aIsMinimized);
+ *aIsMinimized = mIsMinimized;
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayIconImpl::GetCloseOnRestore(bool *aCloseOnRestore)
+{
+ NS_ENSURE_ARG_POINTER(aCloseOnRestore);
+ *aCloseOnRestore = mCloseOnRestore;
+ return NS_OK;
+}
+NS_IMETHODIMP TrayIconImpl::SetCloseOnRestore(bool aCloseOnRestore)
+{
+ mCloseOnRestore = aCloseOnRestore;
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayIconImpl::Minimize()
+{
+ if (mClosed) {
+ return NS_ERROR_NOT_INITIALIZED;
+ }
+ if (mIsMinimized) {
+ // Already minimized
+ return NS_OK;
+ }
+ mPlatformIcon->Minimize();
+ mIsMinimized = true;
+ return NS_OK;
+}
+NS_IMETHODIMP TrayIconImpl::Restore()
+{
+ if (mClosed) {
+ return NS_ERROR_NOT_INITIALIZED;
+ }
+ if (!mIsMinimized) {
+ // Not minimized
+ return NS_OK;
+ }
+ if (mCloseOnRestore) {
+ Close();
+ }
+ else {
+ mPlatformIcon->Restore();
+ }
+ mIsMinimized = false;
+
+ return NS_OK;
+}
+NS_IMETHODIMP TrayIconImpl::Close()
+{
+ if (mClosed) {
+ return NS_OK;
+ }
+ mClosed = true;
+
+ delete mPlatformIcon.forget();
+ mService->CloseIcon(this);
+ mIsMinimized = false;
+
+ nsresult rv;
+ nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(mWindow, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+ target->RemoveEventListener(NS_LITERAL_STRING("unload"), this, false);
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayIconImpl::HandleEvent(nsIDOMEvent *aEvent)
+{
+ NS_ENSURE_ARG_POINTER(aEvent);
+ Close();
+ return NS_OK;
+}
+
+
+NS_IMETHODIMP TrayIconImpl::Init(nsIDOMWindow *aWindow, bool aCloseOnRestore)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+
+ nsresult rv;
+
+ mCloseOnRestore = aCloseOnRestore;
+
+ nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(aWindow, &rv);
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = target->AddEventListener(NS_LITERAL_STRING("unload"), this, false);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIBaseWindow> baseWindow;
+ rv = GetBaseWindow(aWindow, getter_AddRefs(baseWindow));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nativeWindow native = 0;
+ rv = baseWindow->GetParentNativeWindow(&native);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsString title;
+ baseWindow->GetTitle(getter_Copies(title));
+ mPlatformIcon = platform::CreateIcon(this, aWindow, title);
+ mWindow = aWindow;
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayIconImpl::DispatchMouseEvent(const nsAString& aEventName, PRUint16 aButton, nsPoint& pt, bool aCtrlKey, bool aAltKey, bool aShiftKey)
+{
+ nsresult rv;
+
+ nsCOMPtr<nsIDOMDocument> domDocument;
+ rv = mWindow->GetDocument(getter_AddRefs(domDocument));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIDOMEventTarget> target(do_QueryInterface(domDocument));
+ NS_ENSURE_TRUE(target, NS_ERROR_INVALID_ARG);
+
+ nsCOMPtr<nsIDOMEvent> event;
+ rv = domDocument->CreateEvent(NS_LITERAL_STRING("MouseEvents"), getter_AddRefs(event));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIDOMMouseEvent> mouseEvent(do_QueryInterface(event, &rv));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ rv = mouseEvent->InitMouseEvent(
+ aEventName,
+ false,
+ true,
+ mWindow,
+ 0,
+ pt.x,
+ pt.y,
+ 0,
+ 0,
+ aCtrlKey,
+ aAltKey,
+ aShiftKey,
+ false,
+ aButton,
+ target
+ );
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ bool dummy;
+ return target->DispatchEvent(mouseEvent, &dummy);
+}
+
+/* TrayServiceImpl */
+
+NS_IMPL_ISUPPORTS2(TrayServiceImpl, trayITrayService, nsIObserver)
+
+TrayServiceImpl::TrayServiceImpl()
+{
+ platform::Init();
+
+ // Observe when the app is going down.
+ // Else we might not properly clean up
+ // And leave some tray icons behind
+ nsresult rv;
+ nsCOMPtr<nsIObserverService> obs(do_GetService("@mozilla.org/observer-service;1", &rv));
+ if (NS_SUCCEEDED(rv)) {
+ obs->AddObserver(static_cast<nsIObserver*>(this), "xpcom-shutdown", false);
+ }
+
+}
+TrayServiceImpl::~TrayServiceImpl()
+{
+ Destroy();
+ platform::Destroy();
+}
+void TrayServiceImpl::Destroy() {
+ UnwatchAll();
+ RestoreAll();
+
+ // Better be safe :p
+ mIcons.Clear();
+ mWatches.Clear();
+}
+
+NS_IMETHODIMP TrayServiceImpl::CreateIcon(nsIDOMWindow *aWindow, bool aCloseOnRestore, trayITrayIcon **aResult)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+
+ nsresult rv;
+ const PRInt32 count = mIcons.Count();
+
+ for (PRInt32 i = 0; i < count; ++i) {
+ nsCOMPtr<nsIDOMWindow> domWindow;
+ rv = mIcons[i]->GetWindow(getter_AddRefs(domWindow));
+ if (NS_FAILED(rv)) {
+ continue;
+ }
+ if (domWindow != aWindow) {
+ continue;
+ }
+ *aResult = mIcons[i];
+ NS_ADDREF(*aResult);
+ return NS_OK;
+ }
+
+ TrayIconImpl *icon = new TrayIconImpl(this);
+ rv = icon->Init(aWindow, aCloseOnRestore);
+ if (NS_FAILED(rv)) {
+ delete icon;
+ }
+ else {
+ mIcons.AppendObject(icon);
+ if (aResult) {
+ *aResult = icon;
+ NS_ADDREF(*aResult);
+ }
+ }
+ return rv;
+}
+
+NS_IMETHODIMP TrayServiceImpl::RestoreAll()
+{
+ const PRInt32 count = mIcons.Count();
+ for (PRInt32 i = count - 1; i > -1; --i) {
+ mIcons[i]->Restore();
+ }
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayServiceImpl::WatchMinimize(nsIDOMWindow *aWindow)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+
+ const PRInt32 index = mWatches.IndexOf(aWindow);
+ if (index != -1) {
+ return NS_OK;
+ }
+
+ if (!NS_SUCCEEDED(platform::WatchWindow(aWindow))) {
+ return NS_ERROR_INVALID_ARG;
+ }
+ mWatches.AppendObject(aWindow);
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayServiceImpl::UnwatchMinimize(nsIDOMWindow *aWindow)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+
+ if (NS_SUCCEEDED(platform::UnwatchWindow(aWindow))) {
+ return NS_ERROR_INVALID_ARG;
+ }
+ mWatches.RemoveObject(aWindow);
+ return NS_OK;
+}
+
+NS_IMETHODIMP TrayServiceImpl::Minimize(nsIDOMWindow *aWindow, bool aCloseOnRestore)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+
+ nsresult rv;
+
+ nsCOMPtr<trayITrayIcon> icon;
+ rv = CreateIcon(aWindow, aCloseOnRestore, getter_AddRefs(icon));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ rv = icon->Minimize();
+ return rv;
+}
+
+NS_IMETHODIMP TrayServiceImpl::Restore(nsIDOMWindow *aWindow)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+
+ nsresult rv;
+ const PRInt32 count = mIcons.Count();
+
+ for (PRInt32 i = 0; i < count; ++i) {
+ nsCOMPtr<nsIDOMWindow> domWindow;
+ rv = mIcons[i]->GetWindow(getter_AddRefs(domWindow));
+ if (NS_FAILED(rv)) {
+ continue;
+ }
+ if (domWindow != aWindow) {
+ continue;
+ }
+ return mIcons[i]->Restore();
+ }
+ return NS_ERROR_INVALID_ARG;
+}
+
+NS_IMETHODIMP TrayServiceImpl::IsWatchedWindow(nsIDOMWindow *aWindow, bool *aResult)
+{
+ NS_ENSURE_ARG_POINTER(aWindow);
+ NS_ENSURE_ARG_POINTER(aResult);
+
+ *aResult = mWatches.IndexOfObject(aWindow) != -1 ? true : false;
+ return NS_OK;
+}
+
+void TrayServiceImpl::UnwatchAll() {
+ const PRInt32 count = mWatches.Count();
+ for (PRInt32 i = 0; i < count; ++i) {
+ platform::UnwatchWindow(mWatches[i]);
+ }
+ mWatches.Clear();
+}
+
+void TrayServiceImpl::CloseIcon(trayITrayIcon *aIcon)
+{
+ mIcons.RemoveObject(aIcon);
+}
+
+NS_IMETHODIMP TrayServiceImpl::Observe(nsISupports *, const char *aTopic, const PRUnichar *)
+{
+ if (strcasecmp(aTopic, "xpcom-shutdown") == 0) {
+ Destroy();
+
+ nsresult rv;
+ nsCOMPtr<nsIObserverService> obs(do_GetService("@mozilla.org/observer-service;1", &rv));
+ if (NS_SUCCEEDED(rv)) {
+ obs->RemoveObserver(static_cast<nsIObserver*>(this), "xpcom-shutdown");
+ }
+ }
+ return NS_OK;
+}
+
+} // namespace mintrayr
new file mode 100644
--- /dev/null
+++ b/im/components/mintrayr/trayToolkit.h
@@ -0,0 +1,115 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef __TRAYTOOLKIT_IMPL_H
+#define __TRAYTOOLKIT_IMPL_H
+
+#include "xpcom-config.h"
+
+#include "nsCOMArray.h"
+#include "nsCOMPtr.h"
+#include "nsAutoPtr.h"
+#include "nsPoint.h"
+
+#include "nsIDOMEventListener.h"
+#include "nsIBaseWindow.h"
+#include "nsIDOMWindow.h"
+
+#include "trayIToolkit.h"
+#include "trayPlatform.h"
+#include "nsXPCOMStrings.h"
+#include "nsIObserver.h"
+
+
+#define TRAYSERVICE_CONTRACTID "@tn123.ath.cx/trayservice;1"
+#define TRAYSERVICE_CLASSNAME "TrayServiceImpl"
+
+namespace mintrayr {
+
+/**
+ * Minimize on what actions
+ */
+typedef enum _eMinimizeActions {
+ kTrayOnMinimize = (1 << 0),
+ kTrayOnClose = (1 << 1)
+} eMinimizeActions;
+
+/**
+ * Helper for watch: Minimize a window if a configured for the action
+ */
+bool DoMinimizeWindow(nsIDOMWindow *window, eMinimizeActions action);
+
+/**
+ * Helper: Gets the base window
+ */
+NS_IMETHODIMP GetBaseWindow(nsIDOMWindow *aWindow, nsIBaseWindow **aBaseWindow);
+
+/**
+ * Helper: Dispatches a trusted event (i.e. chrome only)
+ */
+NS_IMETHODIMP DispatchTrustedEvent(nsIDOMWindow *aWindow, const nsAString& aEventName);
+
+class TrayServiceImpl;
+
+/**
+ * The implementation for trayITrayIcon
+ */
+class TrayIconImpl MOZ_FINAL : public trayITrayIcon, nsIDOMEventListener {
+ friend class platform::Icon;
+
+private:
+ bool mIsMinimized;
+ nsCOMPtr<nsIDOMWindow> mWindow;
+
+ bool mCloseOnRestore;
+
+ bool mClosed;
+ TrayServiceImpl *mService;
+ nsAutoPtr<platform::Icon> mPlatformIcon;
+
+public:
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIDOMEVENTLISTENER
+ NS_DECL_TRAYITRAYICON
+
+ TrayIconImpl(TrayServiceImpl *aService)
+ : mIsMinimized(false),
+ mCloseOnRestore(false),
+ mClosed(false),
+ mService(aService)
+ {}
+
+ NS_IMETHOD Init(nsIDOMWindow *aWindow, bool aCloseOnRestore);
+ NS_IMETHOD DispatchMouseEvent(const nsAString& aEventName, PRUint16 aButton, nsPoint& pt, bool aCtrlKey, bool aAltKey, bool aShiftKey);
+ inline bool IsClosed() const { return mClosed; }
+};
+
+/**
+ * The implementation for trayITrayService
+ */
+class TrayServiceImpl MOZ_FINAL : public trayITrayService, nsIObserver {
+ friend class TrayIconImpl;
+public:
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIOBSERVER
+ NS_DECL_TRAYITRAYSERVICE
+
+ TrayServiceImpl();
+
+private:
+ nsCOMArray<trayITrayIcon> mIcons;
+ nsCOMArray<nsIDOMWindow> mWatches;
+
+private:
+ ~TrayServiceImpl();
+ void Destroy();
+
+ void UnwatchAll();
+
+ void CloseIcon(trayITrayIcon *aIcon);
+};
+
+} // namespace
+
+#endif
new file mode 100644
--- /dev/null
+++ b/im/components/moz.build
@@ -0,0 +1,29 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('windows', 'gtk2'):
+ DIRS += ['mintrayr']
+
+EXTRA_COMPONENTS += [
+ 'contentHandler.js contentHandler.manifest',
+ 'ibCommandLineHandler.manifest',
+ 'ibConvStatsService.js ibConvStatsService.manifest',
+ 'ibStatusCommandLineHandler.js ibStatusCommandLineHandler.manifest',
+]
+
+EXTRA_PP_COMPONENTS += [
+ 'ibCommandLineHandler.js',
+]
+
+if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+ EXTRA_COMPONENTS += ['ibDockBadge.js', 'ibDockBadge.manifest']
+else:
+ EXTRA_COMPONENTS += ['profileMigrator.js', 'profileMigrator.manifest']
+
+XPIDL_SOURCES += [
+ 'ibIConvStatsService.idl',
+]
+
+XPIDL_MODULE = 'instantbird'
new file mode 100644
--- /dev/null
+++ b/im/components/profileMigrator.js
@@ -0,0 +1,65 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+function InstantbirdProfileMigrator() { }
+
+InstantbirdProfileMigrator.prototype = {
+ import: function() {
+ var root = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties)
+ .get("DefProfRt", Ci.nsIFile);
+ if (root.leafName == "Profiles")
+ root.leafName = "Instantbird";
+ else
+ root.append("instantbird");
+ var profilesIni = root.clone();
+ profilesIni.append("profiles.ini");
+ if (!profilesIni.exists())
+ return;
+
+ var parser = Cc["@mozilla.org/xpcom/ini-parser-factory;1"].getService(Ci.nsIINIParserFactory)
+ .createINIParser(profilesIni);
+ var profileService = Cc["@mozilla.org/toolkit/profile-service;1"].getService(Ci.nsIToolkitProfileService);
+ profileService.startWithLastProfile = parser.getString("General", "StartWithLastProfile") == "1";
+
+ for (var i = 0; 1; ++i) {
+ var section = "Profile" + i;
+ var name;
+ try {
+ name = parser.getString(section, "Name");
+ } catch(e) {
+ break;
+ }
+ var isRelative = parser.getString(section, "IsRelative");
+ var path = parser.getString(section, "Path");
+ var prof;
+ if (isRelative == "1") {
+ prof = root.clone().QueryInterface(Ci.nsILocalFile);
+ prof.setRelativeDescriptor(root, path);
+ }
+ else {
+ prof = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile)
+ .initWithPath(path);
+ }
+ var currentProfile = profileService.createProfile(prof, null, name);
+
+ try {
+ if (parser.getString(section, "Default") == "1")
+ profileService.selectedProfile = currentProfile;
+ } catch(e) {}
+ }
+ },
+ migrate: function(aStartup) { },
+
+ classDescription: "Instantbird Profile Migrator",
+ classID: Components.ID("028ab7f2-5c83-4643-b846-09119c702faa"),
+ contractID: "@mozilla.org/toolkit/profile-migrator;1",
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIProfileMigrator])
+};
+
+const NSGetFactory =
+ XPCOMUtils.generateNSGetFactory([InstantbirdProfileMigrator]);
new file mode 100644
--- /dev/null
+++ b/im/components/profileMigrator.manifest
@@ -0,0 +1,2 @@
+component {028ab7f2-5c83-4643-b846-09119c702faa} profileMigrator.js
+contract @mozilla.org/toolkit/profile-migrator;1 {028ab7f2-5c83-4643-b846-09119c702faa}
new file mode 100644
--- /dev/null
+++ b/im/config/mozconfigs/linux/mozconfig
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+export MOZILLA_OFFICIAL=1
+mk_add_options MOZILLA_OFFICIAL=1
+
+export CFLAGS="-gdwarf-2 -Wno-sign-compare"
+export CXXFLAGS="-gdwarf-2"
+
+# For NSS symbols
+export MOZ_DEBUG_SYMBOLS=1
+ac_add_options --enable-debug-symbols="-gdwarf-2"
+
+mk_add_options MOZ_MAKE_FLAGS="-j4"
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-instantbird
+
+ac_add_options --with-ccache
+ac_add_options --enable-application=instantbird
+ac_add_options --enable-update-channel=nightly
+ac_add_options --enable-update-packaging
+ac_add_options --enable-optimize
+ac_add_options --disable-debug
+ac_add_options --disable-dbus
+ac_add_options --disable-necko-wifi
+ac_add_options --disable-elf-hack
+ac_add_options --disable-gio
+ac_add_options --disable-gstreamer
+
+# Avoid dependency on libstdc++ 4.7
+ac_add_options --enable-stdcxx-compat
+
+if [ `date +%m%d` = 1031 -o `date +%m%d` = 1101 ]; then
+ac_add_options --with-branding=instantbird/branding/halloween
+fi
new file mode 100644
--- /dev/null
+++ b/im/config/mozconfigs/linux/mozconfig-release
@@ -0,0 +1,34 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+export MOZILLA_OFFICIAL=1
+mk_add_options MOZILLA_OFFICIAL=1
+
+export CFLAGS="-gdwarf-2 -Wno-sign-compare"
+export CXXFLAGS="-gdwarf-2"
+
+# For NSS symbols
+export MOZ_DEBUG_SYMBOLS=1
+ac_add_options --enable-debug-symbols="-gdwarf-2"
+
+mk_add_options MOZ_MAKE_FLAGS="-j4"
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-instantbird
+
+ac_add_options --with-ccache
+ac_add_options --enable-application=instantbird
+ac_add_options --enable-update-channel=release
+ac_add_options --enable-update-packaging
+ac_add_options --enable-optimize
+ac_add_options --disable-debug
+ac_add_options --disable-dbus
+ac_add_options --disable-necko-wifi
+ac_add_options --disable-elf-hack
+ac_add_options --disable-gio
+ac_add_options --disable-gstreamer
+
+# Avoid dependency on libstdc++ 4.7
+ac_add_options --enable-stdcxx-compat
+
+ac_add_options --enable-official-branding
+ac_add_options --with-l10n-base=..
new file mode 100644
--- /dev/null
+++ b/im/config/mozconfigs/macosx/mozconfig
@@ -0,0 +1,33 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+mk_add_options MOZ_BUILD_PROJECTS="i386 x86_64"
+. $topsrcdir/build/macosx/universal/mozconfig.common
+export MOZ_PKG_PLATFORM=mac
+
+export PYTHON=/usr/local/bin/python
+
+# Needed to enable breakpad in application.ini
+export MOZILLA_OFFICIAL=1
+
+export CFLAGS="-gdwarf-2 -W -Wno-unused-parameter -Wno-sign-compare"
+export CXXFLAGS="-gdwarf-2 -W -Wno-unused-parameter -Wno-missing-field-initializers"
+
+# For NSS symbols
+export MOZ_DEBUG_SYMBOLS=1
+ac_add_options --enable-debug-symbols="-gdwarf-2"
+
+# Enable parallel compiling
+mk_add_options MOZ_MAKE_FLAGS="-sj10"
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-instantbird
+
+ac_add_options --enable-application=instantbird
+ac_add_options --enable-update-channel=nightly
+ac_add_options --enable-update-packaging
+ac_add_options --enable-optimize
+ac_add_options --disable-debug
+
+if [ `date +%m%d` = 1031 -o `date +%m%d` = 1101 ]; then
+ac_add_options --with-branding=instantbird/branding/halloween
+fi
new file mode 100644
--- /dev/null
+++ b/im/config/mozconfigs/macosx/mozconfig-release
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+mk_add_options MOZ_BUILD_PROJECTS="i386 x86_64"
+. $topsrcdir/build/macosx/universal/mozconfig.common
+export MOZ_PKG_PLATFORM=mac
+
+export PYTHON=/usr/local/bin/python
+
+# Needed to enable breakpad in application.ini
+export MOZILLA_OFFICIAL=1
+
+export CFLAGS="-gdwarf-2 -W -Wno-unused-parameter -Wno-sign-compare"
+export CXXFLAGS="-gdwarf-2 -W -Wno-unused-parameter -Wno-missing-field-initializers"
+
+# For NSS symbols
+export MOZ_DEBUG_SYMBOLS=1
+ac_add_options --enable-debug-symbols="-gdwarf-2"
+
+# Enable parallel compiling
+mk_add_options MOZ_MAKE_FLAGS="-sj10"
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-instantbird
+
+ac_add_options --enable-application=instantbird
+ac_add_options --enable-update-channel=release
+ac_add_options --enable-update-packaging
+ac_add_options --enable-optimize
+ac_add_options --disable-debug
+
+ac_add_options --enable-official-branding
+ac_add_options --with-l10n-base=..
new file mode 100644
--- /dev/null
+++ b/im/config/mozconfigs/win32/mozconfig
@@ -0,0 +1,28 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+export WIN32_REDIST_DIR=$VCINSTALLDIR'redist\x86\Microsoft.VC'$MOZ_MSVCVERSION'0.CRT'
+
+export MOZILLA_OFFICIAL=1
+mk_add_options MOZILLA_OFFICIAL=1
+
+export CFLAGS="-GL -wd4624 -wd4952 -wd4018"
+export CXXFLAGS="-GL -wd4624 -wd4952"
+export LDFLAGS="-LTCG"
+
+# For NSS symbols
+export MOZ_DEBUG_SYMBOLS=1
+
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-instantbird
+
+ac_add_options --enable-application=instantbird
+ac_add_options --enable-update-channel=nightly
+ac_add_options --enable-optimize
+ac_add_options --disable-debug
+ac_add_options --enable-update-packaging
+ac_add_options --enable-jemalloc
+
+if [ `date +%m%d` = 1031 -o `date +%m%d` = 1101 ]; then
+ac_add_options --with-branding=instantbird/branding/halloween
+fi
new file mode 100644
--- /dev/null
+++ b/im/config/mozconfigs/win32/mozconfig-release
@@ -0,0 +1,26 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+export WIN32_REDIST_DIR=$VCINSTALLDIR'redist\x86\Microsoft.VC'$MOZ_MSVCVERSION'0.CRT'
+
+export MOZILLA_OFFICIAL=1
+mk_add_options MOZILLA_OFFICIAL=1
+
+export CFLAGS="-GL -wd4624 -wd4952 -wd4018"
+export CXXFLAGS="-GL -wd4624 -wd4952"
+export LDFLAGS="-LTCG"
+
+# For NSS symbols
+export MOZ_DEBUG_SYMBOLS=1
+
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-instantbird
+
+ac_add_options --enable-application=instantbird
+ac_add_options --enable-update-channel=release
+ac_add_options --enable-optimize
+ac_add_options --disable-debug
+ac_add_options --enable-update-packaging
+ac_add_options --enable-jemalloc
+ac_add_options --enable-official-branding
+ac_add_options --with-l10n-base=..
new file mode 100644
--- /dev/null
+++ b/im/config/version.txt
@@ -0,0 +1,1 @@
+1.6a1pre
new file mode 100644
--- /dev/null
+++ b/im/configure.in
@@ -0,0 +1,8 @@
+dnl -*- Mode: Autoconf; tab-width: 2; indent-tabs-mode: nil; -*-
+dnl vi: set tabstop=2 shiftwidth=2 expandtab:
+dnl This Source Code Form is subject to the terms of the Mozilla Public
+dnl License, v. 2.0. If a copy of the MPL was not distributed with this
+dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+dnl Things we need to carry from confvars.sh
+AC_SUBST(INSTANTBIRD_VERSION)
new file mode 100644
--- /dev/null
+++ b/im/confvars.sh
@@ -0,0 +1,19 @@
+#! /bin/sh
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+MOZ_APP_NAME=instantbird
+MOZ_XUL_APP=1
+MOZ_ENABLE_LIBXUL=1
+MOZ_CHROME_FILE_FORMAT=omni
+MOZ_UPDATER=1
+MOZ_MATHML=
+
+MOZ_APP_VERSION_TXT=${_topsrcdir}/$MOZ_BUILD_APP/config/version.txt
+MOZ_APP_VERSION=`cat $MOZ_APP_VERSION_TXT`
+INSTANTBIRD_VERSION=$MOZ_APP_VERSION
+
+MOZ_BRANDING_DIRECTORY=im/branding/nightly
+MOZ_OFFICIAL_BRANDING_DIRECTORY=other-licenses/branding/instantbird
+MOZ_APP_ID={33cb9019-c295-46dd-be21-8c4936574bee}
new file mode 100644
--- /dev/null
+++ b/im/content/Makefile.in
@@ -0,0 +1,30 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+# defines used for preference window files
+DEFINES += \
+ -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
+ -DMOZ_MACBUNDLE_NAME=$(MOZ_MACBUNDLE_NAME) \
+ $(NULL)
+
+# ifneq (,$(filter windows gtk2 mac cocoa, $(MOZ_WIDGET_TOOLKIT)))
+# DEFINES += -DHAVE_SHELL_SERVICE=1
+# endif
+
+ifdef MOZ_UPDATER
+DEFINES += -DMOZ_UPDATER=1
+endif
+
+abs_srcdir = $(abspath $(srcdir))
+CHROME_DEPS += $(abs_srcdir)/overrides/app-license.html
+DEFINES += -DAPP_LICENSE_BLOCK=$(abs_srcdir)/overrides/app-license.html
new file mode 100644
--- /dev/null
+++ b/im/content/aboutDialog.css
@@ -0,0 +1,66 @@
+#aboutDialog {
+ padding: 0px 0px 10px 0px;
+}
+
+#modes {
+ min-height: 380px;
+}
+
+#clientBox {
+ background-color: #FFFFFF;
+ background-image: url("chrome://branding/content/about.png");
+ background-repeat: no-repeat;
+ padding-top: 220px;
+ color: #000000;
+}
+
+#versionWrapper {
+ margin: 0px 0px 3px 20px;
+}
+
+#versionField {
+ background-color: #FFFFFF;
+ -moz-appearance: none;
+ border: none;
+ font-weight: bold;
+ color: #909090;
+}
+
+#geckoVersionField,
+#libpurpleVersionField {
+ background-color: #FFFFFF;
+ -moz-appearance: none;
+ border: none;
+ color: #909090;
+ padding-top: 3px !important;
+ padding-left: 10px !important;
+}
+
+#copyright {
+ margin: 10px 20px 3px 20px;
+}
+
+#userAgentField {
+ margin: 0px 0px 3px 20px !important;
+ background-color: #FFFFFF;
+ -moz-appearance: none;
+ border: none;
+}
+
+#groove {
+ margin-top: 0px;
+}
+
+#creditsIframe {
+ cursor: default;
+ -moz-user-select: none;
+}
+
+button[dlgtype="extra2"] {
+ margin-left: 13px;
+}
+
+button[dlgtype="accept"] {
+ margin-right: 13px;
+}
+
new file mode 100644
--- /dev/null
+++ b/im/content/aboutDialog.xul
@@ -0,0 +1,130 @@
+<?xml version="1.0"?> <!-- -*- Mode: HTML -*- -->
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/aboutDialog.css" type="text/css"?>
+#ifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+#endif
+
+<!DOCTYPE window [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+%brandDTD;
+<!ENTITY % aboutDialogDTD SYSTEM "chrome://instantbird/locale/aboutDialog.dtd" >
+%aboutDialogDTD;
+<!ENTITY copyrightYear "2013">
+#ifdef XP_MACOSX
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+#endif
+]>
+
+<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ id="aboutDialog"
+ windowtype="Messenger:About"
+ buttons="accept,extra2"
+ onload="onLoad();"
+ title="&aboutDialog.title;" creditslabel="&credits.label;" creditsaccesskey="&credits.accesskey;"
+ aboutlabel="&aboutLink.label;" aboutaccesskey="&aboutLink.accesskey;" versionlabel="&aboutVersion;"
+ style="width: 299px; height: 330px;">
+
+#ifdef XP_MACOSX
+#include menus.xul.inc
+#endif
+
+ <script type="application/x-javascript">
+ <![CDATA[
+ var gSelectedPage;
+
+ function onLoad() {
+ var xai = Components.classes["@mozilla.org/xre/app-info;1"]
+ .getService(Components.interfaces.nsIXULAppInfo);
+
+ var versionField = document.getElementById("versionField");
+ versionField.value = versionField.value + xai.version
+ + ' (' + xai.appBuildID + ')';
+
+ versionField = document.getElementById("geckoVersionField");
+ versionField.value = versionField.value + xai.platformVersion
+ + ' (' + xai.platformBuildID + ')';
+
+ versionField = document.getElementById("libpurpleVersionField");
+ if ("@instantbird.org/libpurple/core;1" in Components.classes) {
+ var pcs = Components.classes["@instantbird.org/libpurple/core;1"]
+ .getService(Components.interfaces.purpleICoreService);
+ versionField.value = versionField.value + pcs.version;
+ }
+ else {
+ versionField.hidden = true;
+ }
+
+ versionField = document.getElementById("userAgentField");
+ versionField.value = navigator.userAgent;
+
+ var button = document.documentElement.getButton("extra2");
+ button.setAttribute("label", document.documentElement.getAttribute("creditslabel"));
+ button.setAttribute("accesskey", document.documentElement.getAttribute("creditsaccesskey"));
+ gSelectedPage = 0;
+ button.addEventListener("command", switchPage);
+ document.documentElement.getButton("accept").focus();
+ }
+
+ function uninit(aEvent)
+ {
+ if (aEvent.target != document)
+ return;
+ var iframe = document.getElementById("creditsIframe");
+ iframe.setAttribute("src", "");
+ }
+
+ function switchPage(aEvent)
+ {
+ var button = aEvent.target;
+ if (button.localName != "button")
+ return;
+
+ var iframe = document.getElementById("creditsIframe");
+ if (gSelectedPage == 0) {
+ iframe.setAttribute("src", "chrome://instantbird/content/credits.xhtml");
+ button.setAttribute("label", document.documentElement.getAttribute("aboutlabel"));
+ button.setAttribute("accesskey", document.documentElement.getAttribute("aboutaccesskey"));
+ gSelectedPage = 1;
+ }
+ else {
+ iframe.setAttribute("src", "");
+ button.setAttribute("label", document.documentElement.getAttribute("creditslabel"));
+ button.setAttribute("accesskey", document.documentElement.getAttribute("creditsaccesskey"));
+ gSelectedPage = 0;
+ }
+ var modes = document.getElementById("modes");
+ modes.setAttribute("selectedIndex", gSelectedPage);
+ }
+ ]]>
+ </script>
+
+ <deck id="modes" flex="1">
+ <vbox flex="1" id="clientBox">
+ <vbox id="versionWrapper" flex="1">
+ <textbox id="versionField" readonly="true" class="plain" tabindex="2"
+ value="&aboutVersion; "/>
+ <textbox id="geckoVersionField" readonly="true" class="plain"
+ tabindex="3" value="&geckoVersion; "/>
+ <textbox id="libpurpleVersionField" readonly="true" class="plain"
+ tabindex="4" value="&libpurpleVersion; "/>
+ </vbox>
+ <description id="copyright" flex="1">©rightText2;</description>
+ <separator/>
+ <textbox id="userAgentField" readonly="true" class="plain"
+ tabindex="5" multiline="true"/>
+ </vbox>
+
+ <vbox flex="1" id="creditsBox">
+ <iframe id="creditsIframe" flex="1"/>
+ </vbox>
+ </deck>
+
+ <separator class="groove" id="groove"/>
+
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/content/aboutPanel.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<bindings id="aboutPanelBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="aboutPanel">
+ <content flex="1">
+ <xul:browser anonid="aboutBrowser" disablehistory="true" type="content" flex="1"/>
+ </content>
+
+ <implementation>
+ <method name="showAboutPage">
+ <parameter name="aPage"/>
+ <body>
+ <![CDATA[
+ let url = aPage.startsWith("about:") ? aPage : "about:" + aPage;
+ this.browser.loadURI(url);
+ ]]>
+ </body>
+ </method>
+
+ <method name="refreshTitle">
+ <body>
+ <![CDATA[
+ let browser = this.browser;
+ this.tab.setAttribute("label",
+ browser.contentTitle.replace("\0", "", "g") || browser.currentURI.spec);
+ if (browser.currentURI.spec == "about:addons") {
+ // Set the tab type to "addons" so that CSS will set its favicon.
+ this.tab.setAttribute("type", "addons");
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="finishImport">
+ <parameter name="aAboutPanel"/>
+ <body>
+ <![CDATA[
+ this.browser.swapDocShells(aAboutPanel.browser);
+ this.refreshTitle();
+ ]]>
+ </body>
+ </method>
+
+ <property name="browser" readonly="true">
+ <getter>
+ return document.getAnonymousElementByAttribute(this, "anonid", "aboutBrowser");
+ </getter>
+ </property>
+
+ <constructor>
+ <![CDATA[
+ this.browser.addEventListener("DOMTitleChanged", this.refreshTitle.bind(this));
+ // The addon manager does its own link handling using window.open().
+ // We need to override this method to open http links externally.
+ let win = this.browser.contentWindow;
+ let open = win.open;
+ win.open = function(aUrl) {
+ let uri = Services.io.newURI(aUrl, null, null);
+ if (!uri.schemeIs("http") && !uri.schemeIs("https")) {
+ open.apply(this, arguments);
+ }
+ else {
+ Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Components.interfaces.nsIExternalProtocolService).loadUrl(uri);
+ }
+ }
+ ]]>
+ </constructor>
+ </implementation>
+
+ <handlers>
+ <handler event="click">
+ <![CDATA[
+ // We only handle middle clicks. We don't handle the addon manager.
+ if (event.button != 1 || this.browser.currentURI.spec == "about:addons")
+ return;
+
+ // The event target may be a descendant of the actual link.
+ let url;
+ for (let elem = event.target; elem; elem = elem.parentNode) {
+ if (elem instanceof HTMLAnchorElement) {
+ url = elem.href;
+ if (url)
+ break;
+ }
+ }
+ if (!url)
+ return;
+ event.stopPropagation();
+ event.preventDefault();
+
+ // If it's an about page, open it.
+ if (url.startsWith("about:")) {
+ let panel = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "aboutPanel");
+ // addPanel will return null if the window can't accept new tabs.
+ if (window.getTabBrowser().addPanel(panel)) {
+ panel.showAboutPage(url);
+ return;
+ }
+ // If we couldn't add a new tab, load the page in this one.
+ this.showAboutPage(url);
+ return;
+ }
+ // Otherwise open in default browser.
+ // loadUrl can throw if the default browser is misconfigured.
+ Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Components.interfaces.nsIExternalProtocolService)
+ .loadUrl(Services.io.newURI(url, null, null));
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/account.js
@@ -0,0 +1,299 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource://gre/modules/Services.jsm");
+
+const autoJoinPref = "autoJoin";
+
+var account = {
+ onload: function account_onload() {
+ this.account = window.arguments[0];
+ this.proto = this.account.protocol;
+ document.getElementById("accountName").value = this.account.name;
+ document.getElementById("protocolName").value = this.proto.name || this.proto.id;
+ document.getElementById("protocolIcon").src =
+ this.proto.iconBaseURI + "icon48.png";
+
+ let passwordBox = document.getElementById("passwordBox");
+ if (this.proto.noPassword)
+ passwordBox.hidden = true;
+ else {
+ try {
+ // Will throw if we don't have a protocol plugin for the account.
+ document.getElementById("password").value = this.account.password;
+ } catch (e) {
+ passwordBox.hidden = true;
+ }
+ }
+
+ document.getElementById("alias").value = this.account.alias;
+
+ let protoId = this.proto.id;
+ if (protoId == "prpl-irc" || protoId == "prpl-jabber" ||
+ protoId == "prpl-gtalk") {
+ document.getElementById("optionalSeparator").hidden = false;
+ document.getElementById("autojoinBox").hidden = false;
+ var branch = Services.prefs.getBranch("messenger.account." +
+ this.account.id + ".");
+ if (branch.prefHasUserValue(autoJoinPref)) {
+ document.getElementById("autojoin").value =
+ branch.getComplexValue(autoJoinPref, Ci.nsISupportsString).data;
+ }
+ }
+
+/* FIXME
+ document.getElementById("newMailNotification").hidden =
+ !this.proto.newMailNotification;
+*/
+
+ this.prefs = Services.prefs.getBranch("messenger.account." +
+ this.account.id + ".options.");
+ this.populateProtoSpecificBox();
+
+ let proxyVisible = this.proto.usePurpleProxy;
+ if (proxyVisible) {
+ this.proxy = this.account.proxyInfo;
+ this.displayProxyDescription();
+ }
+ document.getElementById("proxyBox").hidden = !proxyVisible;
+ document.getElementById("proxySeparator").hidden = !proxyVisible;
+
+ Services.obs.addObserver(this, "prpl-quit", false);
+ window.addEventListener("unload", this.unload);
+ },
+ unload: function account_unload() {
+ Services.obs.removeObserver(account, "prpl-quit");
+ },
+ observe: function account_observe(aObject, aTopic, aData) {
+ if (aTopic == "prpl-quit") {
+ // libpurple is being uninitialized. Close this dialog.
+ window.close();
+ }
+ },
+
+ displayProxyDescription: function account_displayProxyDescription() {
+ var type = this.proxy.type;
+ var bundle = document.getElementById("proxiesBundle");
+ var proxy;
+ var result;
+ if (type == Ci.purpleIProxyInfo.useGlobal) {
+ proxy = Cc["@instantbird.org/libpurple/core;1"]
+ .getService(Ci.purpleICoreService).globalProxy;
+ type = proxy.type;
+ }
+ else
+ proxy = this.proxy;
+
+ if (type == Ci.purpleIProxyInfo.noProxy)
+ result = bundle.getString("proxies.directConnection");
+
+ if (type == Ci.purpleIProxyInfo.useEnvVar)
+ result = bundle.getString("proxies.useEnvironment");
+
+ if (!result) {
+ // At this point, we should have either a socks or http proxy
+ if (type == Ci.purpleIProxyInfo.httpProxy)
+ result = bundle.getString("proxies.http");
+ else if (type == Ci.purpleIProxyInfo.socks4Proxy)
+ result = bundle.getString("proxies.socks4");
+ else if (type == Ci.purpleIProxyInfo.socks5Proxy)
+ result = bundle.getString("proxies.socks5");
+ else
+ throw "Unknown proxy type";
+
+ if (result)
+ result += " ";
+
+ if (proxy.username)
+ result += proxy.username + "@";
+
+ result += proxy.host + ":" + proxy.port;
+ }
+
+ document.getElementById("proxyDescription").textContent = result;
+ },
+
+ createTextbox: function account_createTextbox(aType, aValue, aLabel, aName) {
+ let row = document.createElement("row");
+ row.setAttribute("align", "center");
+
+ var label = document.createElement("label");
+ label.textContent = aLabel;
+ label.setAttribute("control", aName);
+ row.appendChild(label);
+
+ var textbox = document.createElement("textbox");
+ if (aType)
+ textbox.setAttribute("type", aType);
+ textbox.setAttribute("value", aValue);
+ textbox.setAttribute("id", aName);
+
+ row.appendChild(textbox);
+ return row;
+ },
+
+ createMenulist: function account_createMenulist(aList, aLabel, aName) {
+ let vbox = document.createElement("vbox");
+ vbox.setAttribute("flex", "1");
+
+ var label = document.createElement("label");
+ label.setAttribute("value", aLabel);
+ label.setAttribute("control", aName);
+ vbox.appendChild(label);
+
+ aList.QueryInterface(Ci.nsISimpleEnumerator);
+ var menulist = document.createElement("menulist");
+ menulist.setAttribute("id", aName);
+ var popup = menulist.appendChild(document.createElement("menupopup"));
+ while (aList.hasMoreElements()) {
+ let elt = aList.getNext();
+ let item = document.createElement("menuitem");
+ item.setAttribute("label", elt.name);
+ item.setAttribute("value", elt.value);
+ popup.appendChild(item);
+ }
+ vbox.appendChild(menulist);
+ return vbox;
+ },
+
+ getBool: function account_getBool(aOpt) {
+ if (this.prefs.prefHasUserValue(aOpt.name))
+ return this.prefs.getBoolPref(aOpt.name);
+
+ return aOpt.getBool();
+ },
+
+ getInt: function account_getInt(aOpt) {
+ if (this.prefs.prefHasUserValue(aOpt.name))
+ return this.prefs.getIntPref(aOpt.name);
+
+ return aOpt.getInt();
+ },
+
+ getString: function account_getString(aOpt) {
+ if (this.prefs.prefHasUserValue(aOpt.name))
+ return this.prefs.getComplexValue(aOpt.name, Ci.nsISupportsString).data;
+
+ return aOpt.getString();
+ },
+
+ getListValue: function account_getListValue(aOpt) {
+ if (this.prefs.prefHasUserValue(aOpt.name))
+ return this.prefs.getCharPref(aOpt.name);
+
+ return aOpt.getListDefault();
+ },
+
+ populateProtoSpecificBox: function account_populate() {
+ let rows = document.getElementById("protoSpecific");
+ var id = this.proto.id;
+ for (let opt in this.getProtoOptions()) {
+ var text = opt.label;
+ var name = id + "-" + opt.name;
+ switch (opt.type) {
+ case opt.typeBool:
+ var chk = document.createElement("checkbox");
+ if (this.getBool(opt))
+ chk.setAttribute("checked", "true");
+ chk.setAttribute("label", text);
+ chk.setAttribute("id", name);
+ rows.appendChild(chk);
+ break;
+ case opt.typeInt:
+ rows.appendChild(this.createTextbox("number", this.getInt(opt),
+ text, name));
+ break;
+ case opt.typeString:
+ rows.appendChild(this.createTextbox(null, this.getString(opt),
+ text, name));
+ break;
+ case opt.typeList:
+ rows.appendChild(this.createMenulist(opt.getList(), text, name));
+ document.getElementById(name).value = this.getListValue(opt);
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ }
+ if (!rows.firstChild)
+ document.getElementById("advancedTab").hidden = true;
+ },
+
+ getValue: function account_getValue(aId) {
+ var elt = document.getElementById(aId);
+ if ("checked" in elt)
+ return elt.checked;
+ return elt.value;
+ },
+
+ save: function account_save() {
+ if (!this.proto.noPassword &&
+ !document.getElementById("passwordBox").hidden) {
+ var password = this.getValue("password");
+ if (password != this.account.password)
+ this.account.password = password;
+ }
+
+ var alias = this.getValue("alias");
+ if (alias != this.account.alias)
+ this.account.alias = alias;
+
+ let protoId = this.proto.id;
+ if (protoId == "prpl-irc" || protoId == "prpl-jabber" ||
+ protoId == "prpl-gtalk") {
+ var branch = Services.prefs.getBranch("messenger.account." +
+ this.account.id + ".");
+ var autojoin = this.getValue("autojoin");
+ if (autojoin || branch.prefHasUserValue(autoJoinPref)) {
+ let str = Cc["@mozilla.org/supports-string;1"]
+ .createInstance(Ci.nsISupportsString);
+ str.data = autojoin;
+ branch.setComplexValue(autoJoinPref, Ci.nsISupportsString, str);
+ }
+ }
+
+ if (this.proto.usePurpleProxy &&
+ this.account.proxyInfo.key != this.proxy.key)
+ this.account.proxyInfo = this.proxy;
+
+ for (let opt in this.getProtoOptions()) {
+ var name = this.proto.id + "-" + opt.name;
+ var val = this.getValue(name);
+ switch (opt.type) {
+ case opt.typeBool:
+ if (val != this.getBool(opt))
+ this.account.setBool(opt.name, val);
+ break;
+ case opt.typeInt:
+ if (val != this.getInt(opt))
+ this.account.setInt(opt.name, val);
+ break;
+ case opt.typeString:
+ if (val != this.getString(opt))
+ this.account.setString(opt.name, val);
+ break;
+ case opt.typeList:
+ if (val != this.getListValue(opt))
+ this.account.setString(opt.name, val);
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ }
+ },
+
+ getProtoOptions: function account_getProtoOptions() {
+ let options = this.proto.getOptions();
+ while (options.hasMoreElements())
+ yield options.getNext();
+ },
+
+ openProxySettings: function account_openProxySettings() {
+ window.openDialog("chrome://instantbird/content/proxies.xul", "",
+ "chrome,modal,titlebar,centerscreen",
+ this);
+ this.displayProxyDescription();
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/account.xml
@@ -0,0 +1,347 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+<!DOCTYPE bindings [
+ <!ENTITY % accountsDTD SYSTEM "chrome://instantbird/locale/accounts.dtd">
+ <!ENTITY % certManagerDTD SYSTEM "chrome://pippki/locale/certManager.dtd">
+ %accountsDTD;
+ %certManagerDTD;
+]>
+
+<bindings id="accountBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="account" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:vbox flex="1">
+ <xul:hbox flex="1" align="top">
+ <xul:vbox>
+ <xul:stack xbl:inherits="tooltiptext=protocol">
+ <xul:image xbl:inherits="src=prplicon" class="accountIcon"/>
+ <xul:image class="accountStateIcon"/>
+ </xul:stack>
+ <xul:spacer flex="1"/>
+ </xul:vbox>
+ <xul:vbox flex="1" align="start">
+ <xul:label xbl:inherits="value=name" crop="end" class="accountName"/>
+ <xul:label class="connecting" crop="end" anonid="connecting" value="&account.connecting;"/>
+ <xul:label class="connected" crop="end" anonid="connected"/>
+ <xul:label class="disconnecting" crop="end" value="&account.disconnecting;"/>
+ <xul:label class="disconnected" crop="end" value="&account.disconnected;"/>
+ <xul:description class="error" anonid="error"/>
+ <xul:description class="error" anonid="reconnect"/>
+ <xul:label class="addException text-link"
+ onclick="gAccountManager.addException()"
+ value="&certmgr.addException.label;"
+ accesskey="&certmgr.addException.accesskey;"/>
+ <xul:spacer flex="1"/>
+ </xul:vbox>
+ <xul:checkbox label="&account.autoSignOn.label;" dir="reverse"
+ xbl:inherits="checked=autologin" class="autoSignOn"
+ accesskey="&account.autoSignOn.accesskey;"
+ oncommand="gAccountManager.autologin()"/>
+ </xul:hbox>
+ <xul:hbox flex="1" class="account-buttons" anonid="buttons"
+ xbl:inherits="autologin"/>
+ </xul:vbox>
+ </content>
+ <implementation>
+ <method name="build">
+ <parameter name="aAccount"/>
+ <body>
+ <![CDATA[
+ this._account = aAccount;
+ this.setAttribute("name", aAccount.name);
+ this.setAttribute("id", aAccount.id);
+ var proto = aAccount.protocol;
+ this.setAttribute("protocol", proto.name);
+ this.setAttribute("prplicon", proto.iconBaseURI + "icon32.png");
+ var state = "Unknown";
+ if (this._account.connected) {
+ state = "connected";
+ this.refreshConnectedLabel();
+ } else if (this._account.disconnected) {
+ state = "disconnected";
+ if (this._account.connectionErrorReason != Ci.prplIAccount.NO_ERROR)
+ this.updateConnectionError();
+ else {
+ this.removeAttribute("error");
+ this.removeAttribute("certError");
+ }
+ } else if (this._account.connecting) {
+ state = "connecting";
+ this.updateConnectionState();
+ } else if (this._account.disconnecting) {
+ state = "connected";
+ }
+ this.setAttribute("state", state);
+ this.autoLogin = aAccount.autoLogin;
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateConnectionState">
+ <body>
+ <![CDATA[
+ var bundle = document.getElementById("accountsBundle");
+ const key = "account.connection.progress";
+ var text = this._account.connectionStateMsg;
+ text = text ? bundle.getFormattedString(key, [text])
+ : bundle.getString("account.connecting");
+
+ var progress = document.getAnonymousElementByAttribute(this, "anonid",
+ "connecting");
+ progress.setAttribute("value", text);
+ if (this.reconnectUpdateInterval)
+ this._cancelReconnectTimer();
+
+ this.removeAttribute("certError");
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateConnectionError">
+ <body>
+ <![CDATA[
+ var bundle = document.getElementById("accountsBundle");
+ const key = "account.connection.error";
+ var account = this._account;
+ var text;
+ let errorReason = account.connectionErrorReason;
+ if (errorReason == Ci.imIAccount.ERROR_UNKNOWN_PRPL)
+ text = bundle.getFormattedString(key + "UnknownPrpl",
+ [account.protocol.id]);
+ else if (errorReason == Ci.imIAccount.ERROR_MISSING_PASSWORD)
+ text = bundle.getString(key + "EnteringPasswordRequired");
+ else if (errorReason == Ci.imIAccount.ERROR_CRASHED)
+ text = bundle.getString(key + "CrashedAccount");
+ else
+ text = account.connectionErrorMessage;
+
+ if (errorReason != Ci.imIAccount.ERROR_MISSING_PASSWORD)
+ text = bundle.getFormattedString(key, [text]);
+
+ this.setAttribute("error", "true");
+ if ((Ci.imIAccount.ERROR_CERT_NOT_PROVIDED <= errorReason &&
+ errorReason <= Ci.imIAccount.ERROR_CERT_OTHER_ERROR) &&
+ account.prplAccount.connectionTarget)
+ this.setAttribute("certError", "true");
+ var error = document.getAnonymousElementByAttribute(this, "anonid",
+ "error");
+ error.textContent = text;
+
+ var updateReconnect = (function() {
+ var date = Math.round((account.timeOfNextReconnect - Date.now()) / 1000);
+ let reconnect = "";
+ if (date > 0) {
+ let [val1, unit1, val2, unit2] = DownloadUtils.convertTimeUnits(date);
+ if (!val2)
+ reconnect = bundle.getFormattedString("account.reconnectInSingle",
+ [val1, unit1])
+ else
+ reconnect = bundle.getFormattedString("account.reconnectInDouble",
+ [val1, unit1, val2, unit2])
+ }
+ document.getAnonymousElementByAttribute(this, "anonid", "reconnect")
+ .textContent = reconnect;
+ return reconnect;
+ }).bind(this);
+ if (updateReconnect() && !this.reconnectUpdateInterval) {
+ this.setAttribute("reconnectPending", "true");
+ this.reconnectUpdateInterval = setInterval(updateReconnect, 1000);
+ gAccountManager.disableCommandItems();
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="refreshConnectedLabel">
+ <body>
+ <![CDATA[
+ var bundle = document.getElementById("accountsBundle");
+ var date =
+ 60 * Math.floor((Date.now() - this._account.timeOfLastConnect) / 60000);
+ let value;
+ if (date > 0) {
+ let [val1, unit1, val2, unit2] = DownloadUtils.convertTimeUnits(date);
+ if (!val2)
+ value = bundle.getFormattedString("account.connectedForSingle",
+ [val1, unit1])
+ else
+ value = bundle.getFormattedString("account.connectedForDouble",
+ [val1, unit1, val2, unit2])
+ }
+ else
+ value = bundle.getString("account.connectedForSeconds");
+ this.connectedLabel.value = value;
+ ]]>
+ </body>
+ </method>
+
+ <method name="_cancelReconnectTimer">
+ <body>
+ <![CDATA[
+ this.removeAttribute("reconnectPending");
+ clearInterval(this.reconnectUpdateInterval);
+ delete this.reconnectUpdateInterval;
+ gAccountManager.disableCommandItems();
+ ]]>
+ </body>
+ </method>
+
+ <method name="cancelReconnection">
+ <body>
+ <![CDATA[
+ if (this.reconnectUpdateInterval) {
+ this._cancelReconnectTimer();
+ this._account.cancelReconnection();
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="restoreItems">
+ <body>
+ <![CDATA[
+ // Called after a removal and reinsertion of the binding
+ this._buttons = null;
+ this._connectedLabel = null;
+ if (this._account.connected)
+ this.refreshConnectedLabel();
+ else if (this._account.connecting)
+ this.updateConnectionState();
+ else if (this._account.connectionErrorReason != Ci.prplIAccount.NO_ERROR)
+ this.updateConnectionError();
+ ]]>
+ </body>
+ </method>
+
+ <method name="destroy">
+ <body>
+ <![CDATA[
+ // If we have a reconnect timer, stop it:
+ // it will throw errors otherwise (see bug 480).
+ if (!this.reconnectUpdateInterval)
+ return;
+ clearInterval(this.reconnectUpdateInterval);
+ delete this.reconnectUpdateInterval;
+ ]]>
+ </body>
+ </method>
+
+ <property name="autoLogin">
+ <getter>
+ <![CDATA[
+ return this.hasAttribute("autologin");
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ if (val)
+ this.setAttribute("autologin", "true");
+ else
+ this.removeAttribute("autologin");
+ if (this._account.autoLogin != val)
+ this._account.autoLogin = val;
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <!-- override the default accessible name -->
+ <property name="label" onget="return this.getAttribute('name');"/>
+
+ <property name="account" onget="return this._account;"/>
+
+ <property name="connectedLabel">
+ <getter>
+ <![CDATA[
+ if (!this._connectedLabel)
+ this._connectedLabel =
+ document.getAnonymousElementByAttribute(this, "anonid", "connected");
+ return this._connectedLabel;
+ ]]>
+ </getter>
+ </property>
+
+ <property name="buttons">
+ <getter>
+ <![CDATA[
+ if (!this._buttons)
+ this._buttons =
+ document.getAnonymousElementByAttribute(this, "anonid", "buttons");
+ return this._buttons;
+ ]]>
+ </getter>
+ </property>
+ </implementation>
+ <handlers>
+ <handler event="dblclick">
+ <![CDATA[
+ if (event.button == 0) {
+ // If we double clicked on a widget that has already done
+ // something with the first click, we should ignore the event
+ var localName = event.originalTarget.localName;
+ if (localName != "button" && localName != "checkbox")
+ this.buttons.proceedDefaultAction();
+ }
+
+ // Prevent from loading an account wizzard
+ event.stopPropagation();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+
+ <binding id="buttons" extends="xul:hbox">
+ <content>
+ <xul:button class="disconnectButton"
+ command="cmd_disconnect"
+ anonid="disconnect"/>
+ <xul:button class="connectButton"
+ command="cmd_connect"
+ anonid="connect"/>
+ <xul:spacer flex="1"/>
+ <xul:button command="cmd_delete"/>
+ <xul:button command="cmd_edit"/>
+ </content>
+ <implementation>
+ <property name="activeButton" readonly="true">
+ <getter>
+ <![CDATA[
+ let action =
+ document.getBindingParent(this).account.disconnected ? "connect"
+ : "disconnect";
+ return document.getAnonymousElementByAttribute(this, "anonid", action);
+ ]]>
+ </getter>
+ </property>
+
+ <method name="setFocus">
+ <body>
+ <![CDATA[
+ let focusTarget = this.activeButton;
+ if (focusTarget.disabled)
+ focusTarget = document.getElementById("accountlist");
+ focusTarget.focus();
+ ]]>
+ </body>
+ </method>
+
+ <method name="proceedDefaultAction">
+ <body>
+ <![CDATA[
+ this.activeButton.click();
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ </binding>
+
+ <binding id="nobuttons" extends="xul:hbox"/>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/account.xul
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+
+<!DOCTYPE window SYSTEM "chrome://instantbird/locale/account.dtd">
+
+<dialog
+ id = "account"
+ title = "&accountWindow.title;"
+ buttons= "accept,cancel"
+ width = "&accountWindow.width;"
+ height = "400"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload = "account.onload()"
+ ondialogaccept="account.save()">
+ <script type="application/javascript" src="chrome://instantbird/content/account.js"/>
+
+ <stringbundle id="proxiesBundle" src="chrome://instantbird/locale/proxies.properties"/>
+
+ <hbox>
+ <image id="protocolIcon"/>
+ <vbox flex="1">
+ <label id="accountName" crop="end" class="header"/>
+ <label id="protocolName"/>
+ </vbox>
+ </hbox>
+ <separator/>
+
+ <tabbox flex="1">
+ <tabs id="tabs">
+ <tab id="generalTab" label="&account.general;"/>
+ <tab id="advancedTab" label="&account.advanced;"/>
+ </tabs>
+ <tabpanels id="panels" flex="1">
+ <tabpanel orient="vertical" flex="1" style="overflow:auto;">
+ <hbox id="passwordBox" equalsize="always" align="baseline">
+ <label value="&account.password;" control="password" flex="1"/>
+ <textbox id="password" flex="1" type="password"/>
+ </hbox>
+
+ <separator class="groove"/>
+
+ <hbox id="aliasBox" equalsize="always" align="baseline">
+ <label value="&account.alias;" control="alias" flex="1"/>
+ <textbox id="alias" flex="1"/>
+ </hbox>
+
+ <separator class="groove" hidden="true" id="optionalSeparator"/>
+
+ <checkbox id="newMailNotification" label="&account.newMailNotification;" hidden="true"/>
+
+ <vbox id="autojoinBox" hidden="true">
+ <label value="&account.autojoin;" control="autojoin" flex="1"/>
+ <textbox id="autojoin" flex="1"/>
+ </vbox>
+
+ <separator class="groove" id="proxySeparator"/>
+ <vbox id="proxyBox">
+ <label value="&account.proxySettings.caption;" flex="1"/>
+ <description id="proxyDescription"/>
+ <hbox>
+ <spacer flex="1"/>
+ <button id="proxySettings"
+ label="&account.proxySettings.change.label;"
+ accesskey="&account.proxySettings.change.accessKey;"
+ oncommand="account.openProxySettings();"/>
+ </hbox>
+ </vbox>
+ </tabpanel>
+
+ <tabpanel id="advanced" flex="1" style="overflow:auto;">
+ <grid flex="1">
+ <columns>
+ <column id="label-column" flex="1"/>
+ <column id="value-column" flex="1"/>
+ </columns>
+ <rows id="protoSpecific"/>
+ </grid>
+ </tabpanel>
+
+ </tabpanels>
+ </tabbox>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/content/accountWizard.css
@@ -0,0 +1,7 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.top-protocol {
+ -moz-binding: url("chrome://instantbird/content/accountWizard.xml#topProtocol");
+}
new file mode 100644
--- /dev/null
+++ b/im/content/accountWizard.js
@@ -0,0 +1,594 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource:///modules/imServices.jsm");
+
+const PREF_EXTENSIONS_GETMOREPROTOCOLSURL = "extensions.getMoreProtocolsURL";
+
+var accountWizard = {
+ onload: function aw_onload() {
+ let topProtoList = document.getElementById("topprotolist");
+ let bundle = document.getElementById("topProtocolsBundle");
+ let topProtocols = bundle.getString("topProtocol.list").split(",");
+
+ for each (let topProto in topProtocols) {
+ let proto = Services.core.getProtocolById(topProto);
+ if (proto == null)
+ continue;
+
+ let item = document.createElement("richlistitem");
+ item.className = "top-protocol";
+ topProtoList.insertBefore(item, document.getElementById("otherListItem"));
+ let desc = bundle.getString("topProtocol." + proto.id + ".description");
+ item.build(proto, desc);
+ }
+
+ if (topProtoList.itemCount < 2) {
+ document.getElementById("accountWizard")
+ .getPageById("accountwelcome").next = "accountprotocol";
+ }
+
+ topProtoList.selectedIndex = -1;
+
+ Services.obs.addObserver(this, "prpl-quit", false);
+ window.addEventListener("unload", this.unload);
+ },
+ unload: function aw_unload() {
+ Services.obs.removeObserver(accountWizard, "prpl-quit");
+ },
+ observe: function am_observe(aObject, aTopic, aData) {
+ if (aTopic == "prpl-quit") {
+ // libpurple is being uninitialized. We can't create any new
+ // account so keeping this wizard open would be pointless, close it.
+ window.close();
+ }
+ },
+
+ getUsername: function aw_getUsername() {
+ // If the first username textbox is empty, make sure we return an empty
+ // string so that it blocks the 'next' button of the wizard.
+ if (!this.userNameBoxes[0].value)
+ return "";
+
+ return this.userNameBoxes.reduce(function(prev, elt) prev + elt.value, "");
+ },
+
+ checkUsername: function aw_checkUsername() {
+ let wizard = document.getElementById("accountWizard");
+ let name = accountWizard.getUsername();
+ let duplicateWarning = document.getElementById("duplicateAccount");
+ if (!name) {
+ wizard.canAdvance = false;
+ duplicateWarning.hidden = true;
+ return;
+ }
+
+ let exists = accountWizard.proto.accountExists(name);
+ wizard.canAdvance = !exists;
+ duplicateWarning.hidden = !exists;
+ },
+
+ selectProtocol: function aw_selectProtocol() {
+ // A fix for users wanting to return to the list they previously viewed.
+ let pageId = document.getElementById("accountWizard").currentPage.pageid;
+ document.getElementById("accountusername").previous = pageId;
+
+ let listId = pageId == "accounttoplist" ? "topprotolist" : "protolist";
+ let protoList = document.getElementById(listId);
+ this.proto = Services.core.getProtocolById(protoList.selectedItem.value);
+
+ return true;
+ },
+
+ insertUsernameField: function aw_insertUsernameField(aName, aLabel, aParent,
+ aDefaultValue) {
+ let hbox = document.createElement("hbox");
+ hbox.setAttribute("id", aName + "-hbox");
+ hbox.setAttribute("align", "baseline");
+ hbox.setAttribute("equalsize", "always");
+
+ let label = document.createElement("label");
+ label.setAttribute("value", aLabel);
+ label.setAttribute("control", aName);
+ label.setAttribute("id", aName + "-label");
+ hbox.appendChild(label);
+
+ let textbox = document.createElement("textbox");
+ textbox.setAttribute("id", aName);
+ textbox.setAttribute("flex", 1);
+ if (aDefaultValue)
+ textbox.setAttribute("value", aDefaultValue);
+ textbox.addEventListener("input", accountWizard.checkUsername);
+ hbox.appendChild(textbox);
+
+ aParent.appendChild(hbox);
+ return textbox;
+ },
+
+ showUsernamePage: function aw_showUsernamePage() {
+ let proto = this.proto.id;
+ if ("userNameBoxes" in this && this.userNameProto == proto) {
+ this.checkUsername();
+ return;
+ }
+
+ let bundle = document.getElementById("accountsBundle");
+ let usernameInfo;
+ let emptyText = this.proto.usernameEmptyText;
+ if (emptyText) {
+ usernameInfo =
+ bundle.getFormattedString("accountUsernameInfoWithDescription",
+ [emptyText, this.proto.name]);
+ }
+ else {
+ usernameInfo =
+ bundle.getFormattedString("accountUsernameInfo", [this.proto.name]);
+ }
+ document.getElementById("usernameInfo").textContent = usernameInfo;
+
+ let vbox = document.getElementById("userNameBox");
+ // remove anything that may be there for another protocol
+ let child;
+ while ((child = vbox.firstChild))
+ vbox.removeChild(child);
+
+ let splits = [];
+ for (let split in this.getProtoUserSplits())
+ splits.push(split);
+
+ let label = bundle.getString("accountUsername");
+ this.userNameBoxes = [this.insertUsernameField("name", label, vbox)];
+ this.userNameBoxes[0].emptyText = emptyText;
+
+ for (let i = 0; i < splits.length; ++i) {
+ this.userNameBoxes.push({value: splits[i].separator});
+ label = bundle.getFormattedString("accountColon", [splits[i].label]);
+ let defaultVal = splits[i].defaultValue;
+ this.userNameBoxes.push(this.insertUsernameField("username-split-" + i,
+ label, vbox,
+ defaultVal));
+ }
+ this.userNameBoxes[0].focus();
+ this.userNameProto = proto;
+ this.checkUsername();
+ },
+
+ hideUsernamePage: function aw_hideUsernamePage() {
+ document.getElementById("accountWizard").canAdvance = true;
+ let next = "account" +
+ (this.proto.noPassword ? "advanced" : "password");
+ document.getElementById("accountusername").next = next;
+ },
+
+ showAdvanced: function aw_showAdvanced() {
+ // ensure we don't destroy user data if it's not necessary
+ let id = this.proto.id;
+ if ("protoSpecOptId" in this && this.protoSpecOptId == id)
+ return;
+ this.protoSpecOptId = id;
+
+/* FIXME
+ document.getElementById("newMailNotification").hidden =
+ !this.proto.newMailNotification;
+*/
+ this.populateProtoSpecificBox();
+
+ let proxyVisible = this.proto.usePurpleProxy;
+ if (proxyVisible) {
+ this.proxy = Components.classes["@instantbird.org/purple/proxyinfo;1"]
+ .createInstance(Ci.purpleIProxyInfo);
+ this.proxy.type = Ci.purpleIProxyInfo.useGlobal;
+ this.displayProxyDescription();
+ }
+ document.getElementById("proxyGroupbox").hidden = !proxyVisible;
+
+ let alias = document.getElementById("alias");
+ alias.focus();
+ },
+
+ displayProxyDescription: function aw_displayProxyDescription() {
+ let type = this.proxy.type;
+ let bundle = document.getElementById("proxiesBundle");
+ let proxy;
+ let result;
+ if (type == Ci.purpleIProxyInfo.useGlobal) {
+ proxy = Cc["@instantbird.org/libpurple/core;1"]
+ .getService(Ci.purpleICoreService).globalProxy;
+ type = proxy.type;
+ }
+ else
+ proxy = this.proxy;
+
+ if (type == Ci.purpleIProxyInfo.noProxy)
+ result = bundle.getString("proxies.directConnection");
+
+ if (type == Ci.purpleIProxyInfo.useEnvVar)
+ result = bundle.getString("proxies.useEnvironment");
+
+ if (!result) {
+ // At this point, we should have either a socks or http proxy
+ if (type == Ci.purpleIProxyInfo.httpProxy)
+ result = bundle.getString("proxies.http");
+ else if (type == Ci.purpleIProxyInfo.socks4Proxy)
+ result = bundle.getString("proxies.socks4");
+ else if (type == Ci.purpleIProxyInfo.socks5Proxy)
+ result = bundle.getString("proxies.socks5");
+ else
+ throw "Unknown proxy type";
+
+ if (result)
+ result += " ";
+
+ if (proxy.username)
+ result += proxy.username + "@";
+
+ result += proxy.host + ":" + proxy.port;
+ }
+
+ document.getElementById("proxyDescription").textContent = result;
+ },
+
+ createTextbox: function aw_createTextbox(aType, aValue, aLabel, aName) {
+ let row = document.createElement("row");
+ row.setAttribute("align", "center");
+
+ let label = document.createElement("label");
+ label.textContent = aLabel;
+ label.setAttribute("control", aName);
+ row.appendChild(label);
+
+ let textbox = document.createElement("textbox");
+ if (aType)
+ textbox.setAttribute("type", aType);
+ textbox.setAttribute("value", aValue);
+ textbox.setAttribute("id", aName);
+ textbox.setAttribute("flex", "1");
+
+ row.appendChild(textbox);
+ return row;
+ },
+
+ createMenulist: function aw_createMenulist(aList, aLabel, aName) {
+ let vbox = document.createElement("vbox");
+ vbox.setAttribute("flex", "1");
+
+ let label = document.createElement("label");
+ label.setAttribute("value", aLabel);
+ label.setAttribute("control", aName);
+ vbox.appendChild(label);
+
+ aList.QueryInterface(Ci.nsISimpleEnumerator);
+ let menulist = document.createElement("menulist");
+ menulist.setAttribute("id", aName);
+ let popup = menulist.appendChild(document.createElement("menupopup"));
+ while (aList.hasMoreElements()) {
+ let elt = aList.getNext();
+ let item = document.createElement("menuitem");
+ item.setAttribute("label", elt.name);
+ item.setAttribute("value", elt.value);
+ popup.appendChild(item);
+ }
+ vbox.appendChild(menulist);
+ return vbox;
+ },
+
+ populateProtoSpecificBox: function aw_populate() {
+ let id = this.proto.id;
+ let rows = document.getElementById("protoSpecific");
+ let child;
+ while ((child = rows.firstChild))
+ rows.removeChild(child);
+ let visible = false;
+ for (let opt in this.getProtoOptions()) {
+ let text = opt.label;
+ let name = id + "-" + opt.name;
+ switch (opt.type) {
+ case opt.typeBool:
+ let chk = document.createElement("checkbox");
+ chk.setAttribute("label", text);
+ chk.setAttribute("id", name);
+ if (opt.getBool())
+ chk.setAttribute("checked", "true");
+ rows.appendChild(chk);
+ break;
+ case opt.typeInt:
+ rows.appendChild(this.createTextbox("number", opt.getInt(),
+ text, name));
+ break;
+ case opt.typeString:
+ rows.appendChild(this.createTextbox(null, opt.getString(), text, name));
+ break;
+ case opt.typeList:
+ rows.appendChild(this.createMenulist(opt.getList(), text, name));
+ document.getElementById(name).value = opt.getListDefault();
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ visible = true;
+ }
+ document.getElementById("protoSpecificGroupbox").hidden = !visible;
+ if (visible) {
+ let bundle = document.getElementById("accountsBundle");
+ document.getElementById("protoSpecificCaption").label =
+ bundle.getFormattedString("protoOptions", [this.proto.name]);
+ }
+ },
+
+ createSummaryRow: function aw_createSummaryRow(aLabel, aValue) {
+ let row = document.createElement("row");
+ row.setAttribute("align", "baseline");
+
+ let label = document.createElement("label");
+ label.setAttribute("class", "header");
+ if (aLabel.length > 20) {
+ aLabel = aLabel.substring(0, 20);
+ aLabel += "…";
+ }
+ label.setAttribute("value", aLabel);
+ row.appendChild(label);
+
+ let textbox = document.createElement("textbox");
+ textbox.setAttribute("value", aValue);
+ textbox.setAttribute("class", "plain");
+ textbox.setAttribute("readonly", true);
+ row.appendChild(textbox);
+
+ return row;
+ },
+
+ showSummary: function aw_showSummary() {
+ let rows = document.getElementById("summaryRows");
+ let bundle = document.getElementById("accountsBundle");
+ let child;
+ while ((child = rows.firstChild))
+ rows.removeChild(child);
+
+ let label = bundle.getString("accountProtocol");
+ rows.appendChild(this.createSummaryRow(label, this.proto.name));
+ this.username = this.getUsername();
+ label = bundle.getString("accountUsername");
+ rows.appendChild(this.createSummaryRow(label, this.username));
+ if (!this.proto.noPassword) {
+ this.password = this.getValue("password");
+ if (this.password) {
+ label = document.getElementById("passwordLabel").value;
+ let pass = "";
+ for (let i = 0; i < this.password.length; ++i)
+ pass += "*";
+ rows.appendChild(this.createSummaryRow(label, pass));
+ }
+ }
+ this.alias = this.getValue("alias");
+ if (this.alias) {
+ label = document.getElementById("aliasLabel").value;
+ rows.appendChild(this.createSummaryRow(label, this.alias));
+ }
+
+/* FIXME
+ if (this.proto.newMailNotification)
+ rows.appendChild(this.createSummaryRow("Notify of new mails:",
+ this.getValue("newMailNotification")));
+*/
+
+ let id = this.proto.id;
+ this.prefs = [ ];
+ for (let opt in this.getProtoOptions()) {
+ let name = opt.name;
+ let eltName = id + "-" + name;
+ let val = this.getValue(eltName);
+ // The value will be undefined if the proto specific groupbox has never been opened
+ if (val === undefined)
+ continue;
+ switch (opt.type) {
+ case opt.typeBool:
+ if (val != opt.getBool())
+ this.prefs.push({opt: opt, name: name, value: !!val});
+ break;
+ case opt.typeInt:
+ if (val != opt.getInt())
+ this.prefs.push({opt: opt, name: name, value: val});
+ break;
+ case opt.typeString:
+ if (val != opt.getString())
+ this.prefs.push({opt: opt, name: name, value: val});
+ break;
+ case opt.typeList:
+ if (val != opt.getListDefault())
+ this.prefs.push({opt: opt, name: name, value: val});
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ }
+
+ for (let i = 0; i < this.prefs.length; ++i) {
+ let opt = this.prefs[i];
+ let label = bundle.getFormattedString("accountColon", [opt.opt.label]);
+ rows.appendChild(this.createSummaryRow(label, opt.value));
+ }
+ },
+
+ createAccount: function aw_createAccount() {
+ let acc = Services.accounts.createAccount(this.username, this.proto.id);
+ if (!this.proto.noPassword && this.password)
+ acc.password = this.password;
+ if (this.alias)
+ acc.alias = this.alias;
+ //FIXME: newMailNotification
+
+ for (let i = 0; i < this.prefs.length; ++i) {
+ let option = this.prefs[i];
+ let opt = option.opt;
+ switch(opt.type) {
+ case opt.typeBool:
+ acc.setBool(option.name, option.value);
+ break;
+ case opt.typeInt:
+ acc.setInt(option.name, option.value);
+ break;
+ case opt.typeString:
+ case opt.typeList:
+ acc.setString(option.name, option.value);
+ break;
+ default:
+ throw "unknown type";
+ }
+ }
+ let autologin = this.getValue("connectAutomatically");
+ acc.autoLogin = autologin;
+
+ if (this.proto.usePurpleProxy)
+ acc.proxyInfo = this.proxy;
+
+ acc.save();
+
+ try {
+ if (autologin)
+ acc.connect();
+ } catch (e) {
+ // If the connection fails (for example if we are currently in
+ // offline mode), we still want to close the account wizard
+ }
+
+ if (window.opener) {
+ let am = window.opener.gAccountManager;
+ if (am)
+ am.selectAccount(acc.id);
+ }
+
+ return true;
+ },
+
+ getValue: function aw_getValue(aId) {
+ let elt = document.getElementById(aId);
+ if ("selectedItem" in elt)
+ return elt.selectedItem.value;
+ if ("checked" in elt)
+ return elt.checked;
+ if ("value" in elt)
+ return elt.value;
+ // If the groupbox has never been opened, the binding isn't attached
+ // so the attributes don't exist. The calling code in showSummary
+ // has a special handling of the undefined value for this case.
+ return undefined;
+ },
+
+ getIter: function(aEnumerator) {
+ while (aEnumerator.hasMoreElements())
+ yield aEnumerator.getNext();
+ },
+ getProtocols: function aw_getProtocols()
+ this.getIter(Services.core.getProtocols()),
+ getProtoOptions: function aw_getProtoOptions()
+ this.getIter(this.proto.getOptions()),
+ getProtoUserSplits: function aw_getProtoUserSplits()
+ this.getIter(this.proto.getUsernameSplit()),
+
+ onGroupboxKeypress: function aw_onGroupboxKeypress(aEvent) {
+ let target = aEvent.target;
+ let code = aEvent.charCode || aEvent.keyCode;
+ if (code == KeyEvent.DOM_VK_SPACE ||
+ (code == KeyEvent.DOM_VK_LEFT && !target.hasAttribute("closed")) ||
+ (code == KeyEvent.DOM_VK_RIGHT && target.hasAttribute("closed")))
+ this.toggleGroupbox(target.id);
+ },
+
+ toggleGroupbox: function aw_toggleGroupbox(id) {
+ let elt = document.getElementById(id);
+ if (elt.hasAttribute("closed")) {
+ elt.removeAttribute("closed");
+ if (elt.flexWhenOpened)
+ elt.flex = elt.flexWhenOpened;
+ }
+ else {
+ elt.setAttribute("closed", "true");
+ if (elt.flex) {
+ elt.flexWhenOpened = elt.flex;
+ elt.flex = 0;
+ }
+ }
+ },
+
+ openProxySettings: function aw_openProxySettings() {
+ window.openDialog("chrome://instantbird/content/proxies.xul", "",
+ "chrome,modal,titlebar,centerscreen",
+ this);
+ this.displayProxyDescription();
+ },
+
+ /* Check for correctness and set URL for the "Get more protocols..."-link
+ * Stripped down code from preferences/themes.js
+ */
+ setGetMoreProtocols: function (){
+ let prefURL = PREF_EXTENSIONS_GETMOREPROTOCOLSURL;
+ let getMore = document.getElementById("getMoreProtocols");
+ let showGetMore = false;
+ const nsIPrefBranch2 = Components.interfaces.nsIPrefBranch2;
+
+ if (Services.prefs.getPrefType(prefURL) != nsIPrefBranch2.PREF_INVALID) {
+ try {
+ let getMoreURL = Components.classes["@mozilla.org/toolkit/URLFormatterService;1"]
+ .getService(Components.interfaces.nsIURLFormatter)
+ .formatURLPref(prefURL);
+ getMore.setAttribute("getMoreURL", getMoreURL);
+ showGetMore = getMoreURL != "about:blank";
+ }
+ catch (e) { }
+ }
+ getMore.hidden = !showGetMore;
+ },
+
+ openURL: function (aURL) {
+ Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Components.interfaces.nsIExternalProtocolService)
+ .loadUrl(Services.io.newURI(aURL, null, null));
+ },
+
+ advanceTopProtocolPage: function() {
+ let selectedProtocol = document.getElementById("topprotolist").selectedItem;
+ if (!selectedProtocol || selectedProtocol.id == "otherListItem")
+ return true;
+ accountWizard.selectProtocol();
+ document.getElementById("accountWizard").goTo("accountusername");
+ return false;
+ },
+
+ rewindFromUsernamePage: function() {
+ let wizard = document.getElementById("accountWizard");
+ let previousPage = wizard.getPageById("accountusername").previous;
+ if (previousPage == "accountprotocol")
+ return true;
+ wizard.goTo(previousPage);
+ return false;
+ },
+
+ showProtocolPage: function() {
+ let protoList = document.getElementById("protolist");
+ if (protoList.itemCount > 0)
+ return;
+
+ accountWizard.setGetMoreProtocols();
+ let protos = [];
+ for (let proto in accountWizard.getProtocols())
+ protos.push(proto);
+ protos.sort(function(a, b) a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
+
+ protos.forEach(function(proto) {
+ let item = protoList.appendItem(proto.name, proto.id);
+ item.setAttribute("image", proto.iconBaseURI + "icon.png");
+ item.setAttribute("class", "listitem-iconic");
+ });
+
+ protoList.selectedIndex = 0;
+ },
+
+ topProtocolListKeypress: function() {
+ // Override the listbox behavior that sets a negative currentIndex to 0.
+ let topProtoList = document.getElementById("topprotolist");
+ if (topProtoList.selectedIndex < 0)
+ topProtoList.currentIndex = topProtoList.selectedIndex;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/accountWizard.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings [
+ <!ENTITY % accountsDTD SYSTEM "chrome://instantbird/locale/accountWizard.dtd">
+ %accountsDTD;
+]>
+
+<bindings id="accountWizardBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="topProtocol" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content align="center">
+ <xul:image xbl:inherits="src=prplicon" class="top-proto-icon"/>
+ <xul:vbox>
+ <xul:label xbl:inherits="value=name" class="top-proto-name"/>
+ <xul:description xbl:inherits="value=description" class="top-proto-description"/>
+ </xul:vbox>
+ </content>
+ <implementation>
+ <method name="build">
+ <parameter name="aProtocol"/>
+ <parameter name="aDescription"/>
+ <body>
+ <![CDATA[
+ this.setAttribute("name", aProtocol.name);
+ this.setAttribute("description", aDescription);
+ this.setAttribute("prplicon", aProtocol.iconBaseURI + "icon32.png");
+ this.value = aProtocol.id;
+ ]]>
+ </body>
+ </method>
+ <!-- override the default accessible name.
+ This is also used for typeahead selection. -->
+ <property name="label" onget="return this.getAttribute('name');"/>
+ </implementation>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/accountWizard.xul
@@ -0,0 +1,150 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/accountWizard.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/accountWizard.css" type="text/css"?>
+
+<!DOCTYPE wizard [
+ <!ENTITY % accountWizardDTD SYSTEM "chrome://instantbird/locale/accountWizard.dtd">
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %accountWizardDTD;
+ %brandDTD;
+]>
+
+<wizard id="accountWizard" title="&windowTitle.label;"
+ windowtype="Messenger:accountWizard"
+ onwizardfinish="return accountWizard.createAccount();"
+ onload="accountWizard.onload();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <script type="application/javascript" src="chrome://instantbird/content/accountWizard.js"/>
+ <stringbundle id="proxiesBundle" src="chrome://instantbird/locale/proxies.properties"/>
+ <stringbundle id="accountsBundle" src="chrome://instantbird/locale/accounts.properties"/>
+ <stringbundle id="topProtocolsBundle" src="chrome://instantbird/locale/accountWizard.properties"/>
+
+ <wizardpage id="accountwelcome" pageid="accountwelcome" next="accounttoplist"
+ label="&accountWelcomeTitle.label;">
+ <description>&accountWelcomeInfo.label;</description>
+ <separator/>
+ </wizardpage>
+
+ <wizardpage id="accounttoplist" pageid="accounttoplist" next="accountprotocol"
+ label="&accountProtocolTitle.label;"
+ onpageadvanced="return accountWizard.advanceTopProtocolPage();">
+ <description>&accountProtocolInfo.label2;</description>
+ <separator class="thin"/>
+ <richlistbox flex="1" id="topprotolist"
+ ondblclick="document.getElementById('accountWizard').advance();"
+ onkeypress="accountWizard.topProtocolListKeypress();">
+ <richlistitem id="otherListItem">
+ <label class="top-proto-name" value="&accountProtocolShowMore.label;"/>
+ <description class="top-proto-description" value="&accountProtocolShowMore.description;"/>
+ </richlistitem>
+ </richlistbox>
+ </wizardpage>
+
+ <wizardpage id="accountprotocol" pageid="accountprotocol" next="accountusername"
+ label="&accountProtocolTitle.label;"
+ onpageshow="accountWizard.showProtocolPage();"
+ onpageadvanced="return accountWizard.selectProtocol();">
+ <description>&accountProtocolInfo.label2;</description>
+ <separator class="thin"/>
+ <listbox flex="1" id="protolist"
+ ondblclick="document.getElementById('accountWizard').advance();"/>
+ <hbox pack="end">
+ <label id="getMoreProtocols" class="text-link" value="&accountProtocolGetMore.label;"
+ onclick="if (event.button == 0) { accountWizard.openURL(this.getAttribute('getMoreURL')); }"/>
+ </hbox>
+ </wizardpage>
+
+ <wizardpage id="accountusername" pageid="accountusername" next="accountpassword"
+ label="&accountUsernameTitle.label;"
+ onpageshow="accountWizard.showUsernamePage();"
+ onpagehide="accountWizard.hideUsernamePage();"
+ onpagerewound="return accountWizard.rewindFromUsernamePage();">
+ <description id="usernameInfo"/>
+ <separator/>
+ <vbox id="userNameBox"/>
+ <separator/>
+ <description id="duplicateAccount" hidden="true">&accountUsernameDuplicate.label;</description>
+ </wizardpage>
+
+ <wizardpage id="accountpassword" pageid="accountpassword" next="accountadvanced"
+ label="&accountPasswordTitle.label;">
+ <description>&accountPasswordInfo.label;</description>
+ <separator/>
+ <hbox id="passwordBox" align="baseline">
+ <label value="&accountPasswordField.label;" control="password" id="passwordLabel"/>
+ <textbox id="password" type="password"/>
+ </hbox>
+ <separator/>
+ <description id="passwordManagerDescription">&accountPasswordManager.label;</description>
+ </wizardpage>
+
+ <wizardpage id="accountadvanced" pageid="accountadvanced" next="accountsummary"
+ label="&accountAdvancedTitle.label;"
+ onpageshow="accountWizard.showAdvanced();">
+ <description>&accountAdvancedInfo.label;</description>
+ <separator class="thin"/>
+ <groupbox id="aliasGroupbox" class="collapsable"
+ onkeypress="accountWizard.onGroupboxKeypress(event)">
+ <caption id="aliasGroupboxCaption" label="&accountAliasGroupbox.caption;"
+ onclick="accountWizard.toggleGroupbox('aliasGroupbox')"/>
+ <hbox id="aliasBox" align="baseline">
+ <label value="&accountAliasField.label;" control="alias" id="aliasLabel"/>
+ <textbox id="alias"/>
+ </hbox>
+ <description>&accountAliasInfo.label;</description>
+ </groupbox>
+
+ <checkbox id="newMailNotification"
+ label="&accountAdvanced.newMailNotification.label;" hidden="true"/>
+
+ <groupbox id="protoSpecificGroupbox" class="collapsable" closed="true"
+ onkeypress="accountWizard.onGroupboxKeypress(event)">
+ <caption id="protoSpecificCaption"
+ onclick="accountWizard.toggleGroupbox('protoSpecificGroupbox')"/>
+ <grid flex="1">
+ <columns>
+ <column id="label-column" flex="1"/>
+ <column id="value-column" flex="1"/>
+ </columns>
+ <rows id="protoSpecific"/>
+ </grid>
+ </groupbox>
+
+ <groupbox id="proxyGroupbox" class="collapsable" closed="true"
+ onkeypress="accountWizard.onGroupboxKeypress(event)">
+ <caption id="proxyCaption" label="&accountProxySettings.caption;"
+ onclick="accountWizard.toggleGroupbox('proxyGroupbox')"/>
+ <description id="proxyDescription"/>
+ <hbox>
+ <spacer flex="1"/>
+ <button label="&accountProxySettings.change.label;"
+ accesskey="&accountProxySettings.change.accessKey;"
+ oncommand="accountWizard.openProxySettings();"/>
+ </hbox>
+ </groupbox>
+ </wizardpage>
+
+ <wizardpage id="accountsummary" pageid="accountsummary"
+ label="&accountSummaryTitle.label;"
+ onpageshow="accountWizard.showSummary();">
+ <description>&accountSummaryInfo.label;</description>
+ <separator/>
+ <grid id="summarygrid" flex="1">
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows id="summaryRows"/>
+ </grid>
+ <separator/>
+ <checkbox id="connectAutomatically" label= "&accountSummary.connectAutomatically.label;" checked="true"/>
+ </wizardpage>
+
+</wizard>
new file mode 100644
--- /dev/null
+++ b/im/content/accounts.css
@@ -0,0 +1,33 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+richlistitem {
+ -moz-binding: url("chrome://instantbird/content/account.xml#account");
+}
+
+richlistitem .account-buttons {
+ -moz-binding: url("chrome://instantbird/content/account.xml#nobuttons");
+}
+richlistitem[selected="true"] .account-buttons {
+ -moz-binding: url("chrome://instantbird/content/account.xml#buttons");
+}
+
+richlistitem:not([state="connected"]) .connected,
+richlistitem:not([state="connecting"]) .connecting,
+richlistitem:not([state="disconnected"]) .disconnected,
+richlistitem:not([state="disconnecting"]) .disconnecting,
+richlistitem:not([error="true"]) .error,
+richlistitem:not([error="true"]) .errorIcon,
+richlistitem:not([state="disconnected"]) .error,
+richlistitem[error="true"] .disconnected,
+richlistitem[selected="true"]:not([state="disconnected"]) .connectButton,
+richlistitem[selected="true"][state="disconnected"] .disconnectButton,
+richlistitem[selected="true"][state="disconnecting"] .disconnectButton,
+richlistitem[selected="true"]:not([certError="true"]) .addException,
+richlistitem:not([selected="true"]) .addException,
+richlistitem:not([selected="true"]) .autoSignOn,
+richlistitem:not([reconnectPending="true"]) description[anonid="reconnect"]
+{
+ display: none;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/accounts.js
@@ -0,0 +1,701 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource:///modules/imServices.jsm");
+Cu.import("resource://gre/modules/DownloadUtils.jsm");
+
+// This is the list of notifications that the account manager window observes
+const events = [
+ "prpl-quit",
+ "account-list-updated",
+ "account-added",
+ "account-updated",
+ "account-removed",
+ "account-connected",
+ "account-connecting",
+ "account-disconnected",
+ "account-disconnecting",
+ "account-connect-progress",
+ "account-connect-error",
+ "autologin-processed",
+ "status-changed",
+ "network:offline-status-changed"
+];
+
+var gAccountManager = {
+ // Sets the delay after connect() or disconnect() during which
+ // it is impossible to perform disconnect() and connect()
+ _disabledDelay: 500,
+ disableTimerID: 0,
+ _connectedLabelInterval: 0,
+ load: function am_load() {
+ this.accountList = document.getElementById("accountlist");
+ let defaultID;
+ for (let acc in this.getAccounts()) {
+ var elt = document.createElement("richlistitem");
+ this.accountList.appendChild(elt);
+ elt.build(acc);
+ if (!defaultID && acc.firstConnectionState == acc.FIRST_CONNECTION_CRASHED)
+ defaultID = acc.id;
+ }
+ for each (let event in events)
+ Services.obs.addObserver(this, event, false);
+ if (!this.accountList.getRowCount())
+ // This is horrible, but it works. Otherwise (at least on mac)
+ // the wizard is not centered relatively to the account manager
+ setTimeout(function() { gAccountManager.new(); }, 0);
+ else {
+ // we have accounts, show the list
+ document.getElementById("accountsDesk").selectedIndex = 1;
+
+ // ensure an account is selected
+ if (defaultID)
+ this.selectAccount(defaultID);
+ else
+ this.accountList.selectedIndex = 0;
+ }
+
+ this.setAutoLoginNotification();
+
+ this.accountList.addEventListener("keypress", this.onKeyPress, true);
+ window.addEventListener("unload", this.unload.bind(this));
+ this._connectedLabelInterval = setInterval(this.updateConnectedLabels, 60000);
+ },
+ unload: function am_unload() {
+ clearInterval(this._connectedLabelInterval);
+ for each (let event in events)
+ Services.obs.removeObserver(this, event);
+ },
+ _updateAccountList: function am__updateAccountList() {
+ let accountList = this.accountList;
+ let i = 0;
+ for (let acc in this.getAccounts()) {
+ let oldItem = accountList.getItemAtIndex(i);
+ if (oldItem.id != acc.id) {
+ let accElt = document.getElementById(acc.id);
+ accountList.insertBefore(accElt, oldItem);
+ accElt.restoreItems();
+ }
+ ++i;
+ }
+
+ if (accountList.itemCount == 0) {
+ // Focus the "New Account" button if there are no accounts left.
+ document.getElementById("newaccount").focus();
+ // Return early, otherwise we'll run into an 'undefined property' strict
+ // warning when trying to focus the buttons. Fixes bug 408.
+ return;
+ }
+
+ // The selected item is still selected
+ accountList.selectedItem.buttons.setFocus();
+ accountList.ensureSelectedElementIsVisible();
+
+ // We need to refresh the disabled menu items
+ this.disableCommandItems();
+ },
+ observe: function am_observe(aObject, aTopic, aData) {
+ if (aTopic == "prpl-quit") {
+ // libpurple is being uninitialized. We don't need the account
+ // manager window anymore, close it.
+ this.close();
+ return;
+ }
+ else if (aTopic == "autologin-processed") {
+ var notification = document.getElementById("accountsNotificationBox")
+ .getNotificationWithValue("autoLoginStatus");
+ if (notification)
+ notification.close();
+ return;
+ }
+ else if (aTopic == "network:offline-status-changed") {
+ this.setOffline(aData == "offline");
+ return;
+ }
+ else if (aTopic == "status-changed") {
+ this.setOffline(aObject.statusType == Ci.imIStatusInfo.STATUS_OFFLINE);
+ return;
+ }
+ else if (aTopic == "account-list-updated") {
+ this._updateAccountList();
+ return;
+ }
+
+ // The following notification handlers need an account.
+ aObject.QueryInterface(Ci.imIAccount);
+
+ if (aTopic == "account-added") {
+ document.getElementById("accountsDesk").selectedIndex = 1;
+ var elt = document.createElement("richlistitem");
+ this.accountList.appendChild(elt);
+ elt.build(aObject);
+ if (this.accountList.getRowCount() == 1)
+ this.accountList.selectedIndex = 0;
+ }
+ else if (aTopic == "account-removed") {
+ var elt = document.getElementById(aObject.id);
+ elt.destroy();
+ if (!elt.selected) {
+ this.accountList.removeChild(elt);
+ return;
+ }
+ // The currently selected element is removed,
+ // ensure another element gets selected (if the list is not empty)
+ var selectedIndex = this.accountList.selectedIndex;
+ // Prevent errors if the timer is active and the account deleted
+ clearTimeout(this.disableTimerID);
+ this.disableTimerID = 0;
+ this.accountList.removeChild(elt);
+ var count = this.accountList.getRowCount();
+ if (!count) {
+ document.getElementById("accountsDesk").selectedIndex = 0;
+ return;
+ }
+ if (selectedIndex == count)
+ --selectedIndex;
+ this.accountList.selectedIndex = selectedIndex;
+ }
+ else if (aTopic == "account-updated") {
+ document.getElementById(aObject.id).build(aObject);
+ this.disableCommandItems();
+ }
+ else if (aTopic == "account-connect-progress")
+ document.getElementById(aObject.id).updateConnectionState();
+ else if (aTopic == "account-connect-error")
+ document.getElementById(aObject.id).updateConnectionError();
+ else {
+ const stateEvents = {
+ "account-connected": "connected",
+ "account-connecting": "connecting",
+ "account-disconnected": "disconnected",
+ "account-disconnecting": "disconnecting"
+ };
+ if (aTopic in stateEvents) {
+ let elt = document.getElementById(aObject.id);
+ if (!elt)
+ return; // probably disconnecting a removed account.
+
+ if (aTopic == "account-connecting") {
+ elt.removeAttribute("error");
+ elt.updateConnectionState();
+ }
+ else {
+ if (aTopic == "account-connected")
+ elt.refreshConnectedLabel();
+ }
+
+ elt.setAttribute("state", stateEvents[aTopic]);
+ }
+ }
+ },
+ cancelReconnection: function am_cancelReconnection() {
+ this.accountList.selectedItem.cancelReconnection();
+ },
+ connect: function am_connect() {
+ let account = this.accountList.selectedItem.account;
+ if (account.disconnected) {
+ this.temporarilyDisableButtons();
+ account.connect();
+ }
+ },
+ disconnect: function am_disconnect() {
+ let account = this.accountList.selectedItem.account;
+ if (account.connected || account.connecting) {
+ this.temporarilyDisableButtons();
+ account.disconnect();
+ }
+ },
+ addException: function am_addException() {
+ let account = this.accountList.selectedItem.account;
+ if (!account.disconnected || !account.prplAccount.connectionTarget)
+ return;
+
+ // Open the Gecko SSL exception dialog.
+ let params = {exceptionAdded: false, prefetchCert: true,
+ location: account.prplAccount.connectionTarget};
+ window.openDialog("chrome://pippki/content/exceptionDialog.xul", "",
+ "chrome,centerscreen,modal", params);
+ // Reconnect the account if an exception was added.
+ if (params.exceptionAdded)
+ account.connect();
+ },
+ copyDebugLog: function am_copyDebugLog() {
+ let account = this.accountList.selectedItem.account;
+ let text = account.getDebugMessages().map(function(dbgMsg) {
+ let m = dbgMsg.message;
+ const dateServ = Cc["@mozilla.org/intl/scriptabledateformat;1"]
+ .getService(Ci.nsIScriptableDateFormat);
+ let time = new Date(m.timeStamp);
+ time = dateServ.FormatDateTime("", dateServ.dateFormatShort,
+ dateServ.timeFormatSeconds,
+ time.getFullYear(), time.getMonth() + 1,
+ time.getDate(), time.getHours(),
+ time.getMinutes(), time.getSeconds());
+ let level = dbgMsg.logLevel;
+ if (!level)
+ return "(" + m.errorMessage + ")";
+ if (level == dbgMsg.LEVEL_ERROR)
+ level = "ERROR";
+ else if (level == dbgMsg.LEVEL_WARNING)
+ level = "WARN.";
+ else if (level == dbgMsg.LEVEL_LOG)
+ level = "LOG ";
+ else
+ level = "DEBUG"
+ return "[" + time + "] " + level + " (@ " + m.sourceLine +
+ " " + m.sourceName + ":" + m.lineNumber + ")\n" +
+ m.errorMessage;
+ }).join("\n");
+ Cc["@mozilla.org/widget/clipboardhelper;1"]
+ .getService(Ci.nsIClipboardHelper).copyString(text);
+ },
+ updateConnectedLabels: function am_updateConnectedLabels() {
+ for (let i = 0; i < gAccountManager.accountList.itemCount; ++i) {
+ let item = gAccountManager.accountList.getItemAtIndex(i);
+ if (item.account.connected)
+ item.refreshConnectedLabel();
+ }
+ },
+ /* This function disables the connect/disconnect buttons for
+ * `this._disabledDelay` ms before calling disableCommandItems to restore
+ * the state of the buttons.
+ */
+ temporarilyDisableButtons: function am_temporarilyDisableButtons() {
+ document.getElementById("cmd_disconnect").setAttribute("disabled", "true");
+ document.getElementById("cmd_connect").setAttribute("disabled", "true");
+ clearTimeout(this.disableTimerID);
+ this.accountList.focus();
+ this.disableTimerID = setTimeout(function(aItem) {
+ gAccountManager.disableTimerID = 0;
+ gAccountManager.disableCommandItems();
+ aItem.buttons.setFocus();
+ }, this._disabledDelay, this.accountList.selectedItem);
+ },
+
+ delete: function am_delete() {
+ var selectedItem = this.accountList.selectedItem;
+ if (!selectedItem)
+ return;
+
+ var showPrompt =
+ Services.prefs.getBoolPref("messenger.accounts.promptOnDelete");
+ if (showPrompt) {
+ var prompts = Services.prompt;
+ var bundle = document.getElementById("accountsBundle");
+ var promptTitle = bundle.getString("account.deletePrompt.title");
+ var promptMessage = bundle.getString("account.deletePrompt.message");
+ var promptCheckbox = bundle.getString("account.deletePrompt.checkbox");
+ var deleteButton = bundle.getString("account.deletePrompt.button");
+
+ var checkbox = {};
+ var flags = prompts.BUTTON_TITLE_IS_STRING * prompts.BUTTON_POS_0 +
+ prompts.BUTTON_TITLE_CANCEL * prompts.BUTTON_POS_1 +
+ prompts.BUTTON_POS_1_DEFAULT;
+ if (prompts.confirmEx(window, promptTitle, promptMessage, flags,
+ deleteButton, null, null, promptCheckbox, checkbox))
+ return;
+
+ if (checkbox.value)
+ Services.prefs.setBoolPref("messenger.accounts.promptOnDelete", false);
+ }
+
+ Services.accounts.deleteAccount(selectedItem.id);
+ },
+ new: function am_new() {
+ this.openDialog("chrome://instantbird/content/accountWizard.xul");
+ },
+ edit: function am_edit() {
+ this.openDialog("chrome://instantbird/content/account.xul",
+ this.accountList.selectedItem.account);
+ },
+ autologin: function am_autologin() {
+ var elt = this.accountList.selectedItem;
+ elt.autoLogin = !elt.autoLogin;
+ },
+ close: function am_close() {
+ // If a modal dialog is opened, we can't close this window now
+ if (this.modalDialog)
+ setTimeout(function() { window.close();}, 0);
+ else
+ window.close();
+ },
+
+ /* This function disables or enables the currently selected button and
+ the corresponding context menu item */
+ disableCommandItems: function am_disableCommandItems() {
+ let accountList = this.accountList;
+ let selectedItem = accountList.selectedItem;
+ // When opening the account manager, if accounts have errors, we
+ // can be called during build(), before any item is selected.
+ // In this case, just return early.
+ if (!selectedItem)
+ return;
+
+ // If the timer that disables the button (for a short time) already exists,
+ // we don't want to interfere and set the button as enabled.
+ if (this.disableTimerID)
+ return;
+
+ let account = selectedItem.account;
+ let isCommandDisabled =
+ (this.isOffline ||
+ (account.disconnected &&
+ account.connectionErrorReason == Ci.imIAccount.ERROR_UNKNOWN_PRPL));
+ let disabledItems = {
+ connect: isCommandDisabled,
+ disconnect: isCommandDisabled,
+ moveup: accountList.selectedIndex == 0,
+ movedown: accountList.selectedIndex == accountList.itemCount - 1
+ };
+ for each (let [name, state] in Iterator(disabledItems)) {
+ let elt = document.getElementById("cmd_" + name);
+ if (state)
+ elt.setAttribute("disabled", "true");
+ else
+ elt.removeAttribute("disabled");
+ }
+ },
+ onContextMenuShowing: function am_onContextMenuShowing() {
+ let targetElt = document.popupNode;
+ let isAccount = targetElt instanceof Ci.nsIDOMXULSelectControlItemElement;
+ document.getElementById("contextAccountsItems").hidden = !isAccount;
+ if (isAccount) {
+ let account = targetElt.account;
+ let hiddenItems = {
+ connect: !account.disconnected,
+ disconnect: account.disconnected || account.disconnecting,
+ cancelReconnection: !targetElt.hasAttribute("reconnectPending"),
+ accountsItemsSeparator: account.disconnecting
+ };
+ for (let name in hiddenItems)
+ document.getElementById("context_" + name).hidden = hiddenItems[name];
+ }
+ },
+
+ selectAccount: function am_selectAccount(aAccountId) {
+ this.accountList.selectedItem = document.getElementById(aAccountId);
+ },
+ onAccountSelect: function am_onAccountSelect() {
+ clearTimeout(this.disableTimerID);
+ this.disableTimerID = 0;
+ this.disableCommandItems();
+ let selectedItem = this.accountList.selectedItem;
+ selectedItem.clientHeight; // force synchronous binding attachment
+ selectedItem.buttons.setFocus();
+ // Without the following, the account manager is scrolled to the first
+ // (dis)connect button when being opened.
+ this.accountList.ensureSelectedElementIsVisible();
+ },
+
+ onKeyPress: function am_onKeyPress(event) {
+ if (!this.selectedItem)
+ return;
+
+ if (event.shiftKey &&
+ (event.keyCode == event.DOM_VK_DOWN || event.keyCode == event.DOM_VK_UP)) {
+ let offset = event.keyCode == event.DOM_VK_DOWN ? 1 : -1;
+ gAccountManager.moveCurrentItem(offset);
+ event.stopPropagation();
+ event.preventDefault();
+ return;
+ }
+
+ // As we stop propagation, the default action applies to the richlistbox
+ // so that the selected account is changed with this default action
+ if (event.keyCode == event.DOM_VK_DOWN) {
+ if (this.selectedIndex < this.itemCount - 1)
+ this.ensureIndexIsVisible(this.selectedIndex + 1);
+ event.stopPropagation();
+ return;
+ }
+
+ if (event.keyCode == event.DOM_VK_UP) {
+ if (this.selectedIndex > 0)
+ this.ensureIndexIsVisible(this.selectedIndex - 1);
+ event.stopPropagation();
+ return;
+ }
+
+ if (event.keyCode == event.DOM_VK_RETURN) {
+ let target = event.originalTarget;
+ if (target.localName != "checkbox" &&
+ (target.localName != "button" ||
+ /^(dis)?connect$/.test(target.getAttribute("anonid"))))
+ this.selectedItem.buttons.proceedDefaultAction();
+ return;
+ }
+
+ if (event.keyCode == event.DOM_VK_DELETE)
+ document.getElementById("cmd_delete").doCommand();
+ },
+
+ moveCurrentItem: function am_moveCurrentItem(aOffset) {
+ let accountList = this.accountList;
+ if (!aOffset || !accountList.selectedItem)
+ return;
+
+ // Create the new preference value from the richlistbox list
+ let items = accountList.children;
+ let selectedID = accountList.selectedItem.id;
+ let array = [];
+ for (let i in items)
+ if (items[i].id != selectedID)
+ array.push(items[i].id);
+
+ let newIndex = accountList.selectedIndex + aOffset;
+ if (newIndex < 0)
+ newIndex = 0;
+ else if (newIndex >= accountList.itemCount)
+ newIndex = accountList.itemCount - 1;
+ array.splice(newIndex, 0, selectedID);
+
+ Services.prefs.setCharPref("messenger.accounts", array.join(","));
+ },
+
+ getAccounts: function am_getAccounts() {
+ let accounts = Services.accounts.getAccounts();
+ while (accounts.hasMoreElements())
+ yield accounts.getNext();
+ },
+
+ openDialog: function am_openDialog(aUrl, aArgs) {
+ this.modalDialog = true;
+ window.openDialog(aUrl, "", "chrome,modal,titlebar,centerscreen", aArgs);
+ this.modalDialog = false;
+ },
+ setAutoLoginNotification: function am_setAutoLoginNotification() {
+ var as = Services.accounts;
+ var autoLoginStatus = as.autoLoginStatus;
+ let isOffline = false;
+ let crashCount = 0;
+ for (let acc in this.getAccounts())
+ if (acc.autoLogin && acc.firstConnectionState == acc.FIRST_CONNECTION_CRASHED)
+ ++crashCount;
+
+ if (autoLoginStatus == as.AUTOLOGIN_ENABLED && crashCount == 0) {
+ let status = Services.core.globalUserStatus.statusType;
+ this.setOffline(isOffline || status == Ci.imIStatusInfo.STATUS_OFFLINE);
+ return;
+ }
+
+ var bundle = document.getElementById("accountsBundle");
+ var box = document.getElementById("accountsNotificationBox");
+ var priority = box.PRIORITY_INFO_HIGH;
+ var connectNowButton = {
+ accessKey: bundle.getString("accountsManager.notification.button.accessKey"),
+ callback: this.processAutoLogin,
+ label: bundle.getString("accountsManager.notification.button.label")
+ };
+ var label;
+
+ switch (autoLoginStatus) {
+ case as.AUTOLOGIN_USER_DISABLED:
+ label = bundle.getString("accountsManager.notification.userDisabled.label");
+ break;
+
+ case as.AUTOLOGIN_SAFE_MODE:
+ label = bundle.getString("accountsManager.notification.safeMode.label");
+ break;
+
+ case as.AUTOLOGIN_START_OFFLINE:
+ label = bundle.getString("accountsManager.notification.startOffline.label");
+ isOffline = true;
+ break;
+
+ case as.AUTOLOGIN_CRASH:
+ label = bundle.getString("accountsManager.notification.crash.label");
+ priority = box.PRIORITY_WARNING_MEDIUM;
+ break;
+
+ /* One or more accounts made the application crash during their connection.
+ If none, this function has already returned */
+ case as.AUTOLOGIN_ENABLED:
+ if (!("PluralForm" in window))
+ Cu.import("resource://gre/modules/PluralForm.jsm");
+ label = bundle.getString("accountsManager.notification.singleCrash.label");
+ label = PluralForm.get(crashCount, label).replace("#1", crashCount);
+ priority = box.PRIORITY_WARNING_MEDIUM;
+ connectNowButton.callback = this.processCrashedAccountsLogin;
+ break;
+
+ default:
+ label = bundle.getString("accountsManager.notification.other.label");
+ }
+ let status = Services.core.globalUserStatus.statusType;
+ this.setOffline(isOffline || status == Ci.imIStatusInfo.STATUS_OFFLINE);
+
+ box.appendNotification(label, "autologinStatus", null, priority, [connectNowButton]);
+ },
+ processAutoLogin: function am_processAutoLogin() {
+ var ioService = Services.io;
+ if (ioService.offline) {
+ ioService.manageOfflineStatus = false;
+ ioService.offline = false;
+ }
+
+ Services.accounts.processAutoLogin();
+
+ gAccountManager.accountList.selectedItem.buttons.setFocus();
+ },
+ processCrashedAccountsLogin: function am_processCrashedAccountsLogin() {
+ for (let acc in gAccountManager.getAccounts())
+ if (acc.disconnected && acc.autoLogin &&
+ acc.firstConnectionState == acc.FIRST_CONNECTION_CRASHED)
+ acc.connect();
+
+ let notification = document.getElementById("accountsNotificationBox")
+ .getNotificationWithValue("autoLoginStatus");
+ if (notification)
+ notification.close();
+
+ gAccountManager.accountList.selectedItem.buttons.setFocus();
+ },
+ setOffline: function am_setOffline(aState) {
+ this.isOffline = aState;
+ if (aState)
+ this.accountList.setAttribute("offline", "true");
+ else
+ this.accountList.removeAttribute("offline");
+ this.disableCommandItems();
+ }
+};
+
+
+let gAMDragAndDrop = {
+ ACCOUNT_MIME_TYPE: "application/x-moz-richlistitem",
+ // Size of the scroll zone on the top and on the bottom of the account list
+ MAGIC_SCROLL_HEIGHT: 20,
+
+ // A preference already exists to define scroll speed, let's use it.
+ get SCROLL_SPEED() {
+ delete this.SCROLL_SPEED;
+ try {
+ this.SCROLL_SPEED =
+ Services.prefs.getIntPref("toolkit.scrollbox.scrollIncrement");
+ }
+ catch (e) {
+ this.SCROLL_SPEED = 20;
+ }
+ return this.SCROLL_SPEED;
+ },
+
+ onDragStart: function amdnd_onDragStart(aEvent, aTransferData, aAction) {
+ let accountElement = aEvent.explicitOriginalTarget;
+ // This stops the dragging session.
+ if (!(accountElement instanceof Ci.nsIDOMXULSelectControlItemElement))
+ throw "Element is not draggable!";
+ if (gAccountManager.accountList.itemCount == 1)
+ throw "Can't drag while there is only one account!";
+
+ // Transferdata is never used, but we need to transfer something.
+ aTransferData.data = new TransferData();
+ aTransferData.data.addDataForFlavour(this.ACCOUNT_MIME_TYPE, accountElement);
+ },
+
+ onDragOver: function amdnd_onDragOver(aEvent, aFlavour, aSession) {
+ let accountElement = aEvent.explicitOriginalTarget;
+ // We are dragging over the account manager, consider it is the same as
+ // the last element.
+ if (accountElement == gAccountManager.accountList)
+ accountElement = gAccountManager.accountList.lastChild;
+
+ // Auto scroll the account list if we are dragging at the top/bottom
+ this.checkForMagicScroll(aEvent.clientY);
+
+ // The hovered element has changed, change the border too
+ if (("_accountElement" in this) && this._accountElement != accountElement)
+ this.cleanBorders();
+
+ if (!aSession.canDrop) {
+ aEvent.dataTransfer.dropEffect = "none";
+ return;
+ }
+ aEvent.dataTransfer.dropEffect = "move";
+
+ if (aEvent.clientY < accountElement.getBoundingClientRect().top +
+ accountElement.clientHeight / 2) {
+ // we don't want the previous item to show its default bottom-border
+ let previousItem = accountElement.previousSibling;
+ if (previousItem)
+ previousItem.style.borderBottom = "none";
+ accountElement.setAttribute("dragover", "up");
+ }
+ else {
+ if (("_accountElement" in this) &&
+ this._accountElement == accountElement &&
+ accountElement.getAttribute("dragover") == "up")
+ this.cleanBorders();
+ accountElement.setAttribute("dragover", "down");
+ }
+
+ this._accountElement = accountElement;
+ },
+
+ cleanBorders: function amdnd_cleanBorders(aIsEnd) {
+ if (!this._accountElement)
+ return;
+
+ this._accountElement.removeAttribute("dragover");
+ // reset the border of the previous element
+ let previousItem = this._accountElement.previousSibling;
+ if (previousItem) {
+ if (aIsEnd && !previousItem.style.borderBottom && previousItem.previousSibling)
+ previousItem = previousItem.previousSibling;
+ previousItem.style.borderBottom = "";
+ }
+
+ if (aIsEnd)
+ delete this._accountElement;
+ },
+
+ canDrop: function amdnd_canDrop(aEvent, aSession) {
+ let accountElement = aEvent.explicitOriginalTarget;
+ if (accountElement == gAccountManager.accountList)
+ accountElement = gAccountManager.accountList.lastChild;
+ return (accountElement != gAccountManager.accountList.selectedItem);
+ },
+
+ checkForMagicScroll: function amdnd_checkForMagicScroll(aClientY) {
+ let accountList = gAccountManager.accountList;
+ let listSize = accountList.getBoundingClientRect();
+ let direction = 1;
+ if (aClientY < listSize.top + this.MAGIC_SCROLL_HEIGHT)
+ direction = -1;
+ else if (aClientY < listSize.bottom - this.MAGIC_SCROLL_HEIGHT)
+ // We are not on a scroll zone
+ return;
+
+ accountList._scrollbox.scrollTop += direction * this.SCROLL_SPEED;
+ },
+
+ onDrop: function amdnd_onDrop(aEvent, aTransferData, aSession) {
+ let accountElement = aEvent.explicitOriginalTarget;
+ if (accountElement == gAccountManager.accountList)
+ accountElement = gAccountManager.accountList.lastChild;
+
+ if (!aSession.canDrop)
+ return;
+
+ // compute the destination
+ let accountList = gAccountManager.accountList;
+ let offset = accountList.getIndexOfItem(accountElement) -
+ accountList.selectedIndex;
+ let isDroppingAbove =
+ aEvent.clientY < accountElement.getBoundingClientRect().top +
+ accountElement.clientHeight / 2;
+ if (offset > 0)
+ offset -= isDroppingAbove;
+ else
+ offset += !isDroppingAbove;
+ gAccountManager.moveCurrentItem(offset);
+ },
+
+ getSupportedFlavours: function amdnd_getSupportedFlavours() {
+ var flavours = new FlavourSet();
+ flavours.appendFlavour(this.ACCOUNT_MIME_TYPE,
+ "nsIDOMXULSelectControlItemElement");
+ return flavours;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/accounts.xul
@@ -0,0 +1,142 @@
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://instantbird/content/accounts.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/richlistbox.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/accounts.css" type="text/css"?>
+#ifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+#endif
+
+<!DOCTYPE window [
+ <!ENTITY % accountsDTD SYSTEM "chrome://instantbird/locale/accounts.dtd">
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %accountsDTD;
+ %brandDTD;
+#ifdef XP_MACOSX
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+#endif
+]>
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ id="accountManager"
+ windowtype="Messenger:Accounts"
+ onload="gAccountManager.load()"
+ title="&accounts.title;"
+ height="300"
+ width="&accountManager.width;"
+ persist="width height screenX screenY">
+ <script type="application/javascript" src="chrome://instantbird/content/accounts.js"/>
+ <script type="application/javascript" src="chrome://global/content/nsDragAndDrop.js" />
+ <script type="application/javascript" src="chrome://global/content/nsTransferable.js" />
+
+ <stringbundle id="accountsBundle" src="chrome://instantbird/locale/accounts.properties"/>
+
+ <commandset id="accountsCommands">
+ <command id="cmd_connect"
+ accesskey="&account.connect.accesskey;"
+ label="&account.connect.label;"
+ oncommand="gAccountManager.connect()"/>
+ <command id="cmd_disconnect"
+ label="&account.disconnect.label;"
+ accesskey="&account.disconnect.accesskey;"
+ oncommand="gAccountManager.disconnect()"/>
+ <command id="cmd_cancelReconnection"
+ label="&account.cancelReconnection.label;"
+ accesskey="&account.cancelReconnection.accesskey;"
+ oncommand="gAccountManager.cancelReconnection()"/>
+ <command id="cmd_copyDebugLog"
+ label="&account.copyDebugLog.label;"
+ accesskey="&account.copyDebugLog.accesskey;"
+ oncommand="gAccountManager.copyDebugLog();"/>
+ <command id="cmd_moveup"
+ label="&account.moveup.label;"
+ oncommand="gAccountManager.moveCurrentItem(-1)"/>
+ <command id="cmd_movedown"
+ label="&account.movedown.label;"
+ oncommand="gAccountManager.moveCurrentItem(1)"/>
+ <command id="cmd_delete"
+ label="&account.delete.label;"
+ accesskey="&account.delete.accesskey;"
+ oncommand="gAccountManager.delete()"/>
+ <command id="cmd_edit"
+ label="&account.edit.label;"
+ accesskey="&account.edit.accesskey;"
+ oncommand="gAccountManager.edit()"/>
+ <command id="cmd_new"
+ label="&accountManager.newAccount.label;"
+ accesskey="&accountManager.newAccount.accesskey;"
+ oncommand="gAccountManager.new()"/>
+ <command id="cmd_close"
+ label="&accountManager.close.label;"
+ accesskey="&accountManager.close.accesskey;"
+ oncommand="gAccountManager.close()"/>
+ </commandset>
+
+ <keyset id="accountsKeys">
+ <key id="key_close1" key="w" modifiers="accel" command="cmd_close"/>
+ <key id="key_close2" keycode="VK_ESCAPE" command="cmd_close"/>
+ <key id="key_close3" command="cmd_close"
+ key="&accountManager.close.commandkey;" modifiers="accel,shift"/>
+ </keyset>
+
+#ifdef XP_MACOSX
+#include menus.xul.inc
+#endif
+
+ <broadcasterset>
+ <broadcaster id="contextAccountsItems"/>
+ </broadcasterset>
+
+ <menupopup id="accountsContextMenu"
+ onpopupshowing="gAccountManager.onContextMenuShowing()">
+ <menuitem id="context_connect"
+ command="cmd_connect"
+ observes="contextAccountsItems"/>
+ <menuitem id="context_disconnect"
+ command="cmd_disconnect"
+ observes="contextAccountsItems"/>
+ <menuitem id="context_cancelReconnection"
+ command="cmd_cancelReconnection"
+ observes="contextAccountsItems"/>
+ <menuitem id="context_copyDebugLog"
+ command="cmd_copyDebugLog"/>
+ <menuseparator id="context_accountsItemsSeparator"
+ observes="contextAccountsItems"/>
+ <menuitem command="cmd_new"/>
+ <menuitem command="cmd_delete" observes="contextAccountsItems"/>
+ <menuseparator observes="contextAccountsItems"/>
+ <menuitem command="cmd_moveup" observes="contextAccountsItems"/>
+ <menuitem command="cmd_movedown" observes="contextAccountsItems"/>
+ <menuseparator observes="contextAccountsItems"/>
+ <menuitem command="cmd_edit" observes="contextAccountsItems"/>
+ </menupopup>
+
+ <deck flex="1" id="accountsDesk" ondblclick="gAccountManager.new();">
+ <vbox flex="1" id="noAccountScreen" align="center" pack="center">
+ <hbox id="noAccountBox" align="top">
+ <image id="noAccountImage"/>
+ <vbox id="noAccountInnerBox" flex="1">
+ <label id="noAccountTitle" value="&accountManager.noAccount.title;"/>
+ <description id="noAccountDesc">&accountManager.noAccount.description;</description>
+ </vbox>
+ </hbox>
+ </vbox>
+ <notificationbox id="accountsNotificationBox" flex="1">
+ <richlistbox id="accountlist" flex="1" context="accountsContextMenu"
+ onselect="gAccountManager.onAccountSelect();"
+ ondragstart="nsDragAndDrop.startDrag(event, gAMDragAndDrop);"
+ ondragover="nsDragAndDrop.dragOver(event, gAMDragAndDrop);"
+ ondragend="gAMDragAndDrop.cleanBorders(true);"
+ ondragdrop="nsDragAndDrop.drop(event, gAMDragAndDrop);"/>
+ </notificationbox>
+ </deck>
+ <windowdragbox id="bottombuttons" align="center">
+ <button id="newaccount" command="cmd_new"/>
+ <spacer flex="1"/>
+ <button id="close" command="cmd_close"/>
+ </windowdragbox>
+</window>
new file mode 100644
--- /dev/null
+++ b/im/content/addbuddy.js
@@ -0,0 +1,58 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+var addBuddy = {
+ onload: function ab_onload() {
+ this.buildAccountList();
+ this.buildTagList();
+ },
+
+ buildAccountList: function ab_buildAccountList() {
+ var accountList = document.getElementById("accountlist");
+ for (let acc in getIter(Services.accounts.getAccounts())) {
+ if (!acc.connected)
+ continue;
+ var proto = acc.protocol;
+ var item = accountList.appendItem(acc.name, acc.id, proto.name);
+ item.setAttribute("image", proto.iconBaseURI + "icon.png");
+ item.setAttribute("class", "menuitem-iconic");
+ }
+ if (!accountList.itemCount) {
+ document.getElementById("addBuddyDialog").cancelDialog();
+ throw "No connected account!";
+ }
+ accountList.selectedIndex = 0;
+ },
+
+ buildTagList: function ab_buildTagList() {
+ var tagList = document.getElementById("taglist");
+ Services.tags.getTags().forEach(function(tag) {
+ tagList.appendItem(tag.name, tag.id);
+ });
+ tagList.selectedIndex = 0;
+ },
+
+ oninput: function ab_oninput() {
+ document.documentElement.getButton("accept").disabled =
+ !addBuddy.getValue("name");
+ },
+
+ getValue: function ab_getValue(aId) document.getElementById(aId).value,
+
+ create: function ab_create() {
+ var account = Services.accounts.getAccountById(this.getValue("accountlist"));
+ var name = this.getValue("name");
+
+ var tag;
+ var taglist = document.getElementById("taglist");
+ var items = taglist.getElementsByAttribute("label", taglist.label);
+ if (items.length)
+ tag = Services.tags.getTagById(items[0].value);
+ else
+ tag = Services.tags.createTag(taglist.label);
+
+ account.addBuddy(tag, name);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/addbuddy.xul
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/menulist.css" type="text/css"?>
+
+<!DOCTYPE window SYSTEM "chrome://instantbird/locale/addbuddy.dtd">
+
+<dialog
+ id = "addBuddyDialog"
+ windowtype="Messenger:AddBuddy"
+ title = "&addContactWindow.title;"
+ buttons= "accept,cancel"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload = "addBuddy.onload()"
+ ondialogaccept="addBuddy.create()"
+ buttondisabledaccept="true">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/addbuddy.js"/>
+
+ <stringbundle id="instantbirdBundle" src="chrome://instantbird/locale/instantbird.properties"/>
+
+ <grid>
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+
+ <row id="nameBox" align="baseline">
+ <label value="&name.label;" control="name"/>
+ <textbox id="name" oninput="addBuddy.oninput()"/>
+ </row>
+
+ <row id="accountBox" align="center">
+ <label value="&account.label;" control="accountlist"/>
+ <menulist id="accountlist"/>
+ </row>
+
+ <row id="tagBox" align="baseline">
+ <label value="&tag.label;" control="taglist"/>
+ <menulist id="taglist" editable="true"/>
+ </row>
+
+ </rows>
+ </grid>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/content/blist.css
@@ -0,0 +1,158 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+contact {
+ -moz-binding: url("chrome://instantbird/content/contact.xml#contact");
+ -moz-box-align: center;
+}
+contact[open],
+contact[aliasing],
+#buddylistbox:focus > contact[selected] {
+ -moz-binding: url("chrome://instantbird/content/contact.xml#contact-big");
+ -moz-box-orient: vertical;
+ -moz-box-align: stretch;
+}
+
+contact[aliasing] .contactDisplayName {
+ -moz-binding: url("chrome://global/content/bindings/textbox.xml#textbox");
+}
+
+buddy {
+ -moz-binding: url("chrome://instantbird/content/buddy.xml#buddy");
+}
+buddy[dummy] {
+ -moz-binding: url("chrome://instantbird/content/buddy.xml#buddy-dummy");
+}
+
+group {
+ -moz-binding: url("chrome://instantbird/content/group.xml#group");
+ -moz-box-align: center;
+}
+
+/* The height is required for the animation to work. The skin can
+ * specify an additionnal min-height value if there are things of
+ * constant size (icons + padding) */
+contact,
+buddy,
+group {
+ height: 1em;
+}
+
+/* Possible values of the |state| attribute:
+ - not set: the binding is not initialized yet,
+ - showing: during the expand animation,
+ - visible: the buddy is visible to the user,
+ - fading: the buddy has signed-off, during the fade out animation,
+ - collapsing: collapse animation (before the node is removed from the DOM),
+ - collapsed: the buddy is inside a closed group.
+ */
+contact:not([state]),
+buddy:not([state]) {
+ height: 0;
+}
+contact[state="showing"],
+buddy[state="showing"] {
+ /* Should match the transition effect for contact/buddy collapsing so
+ that reordering doesn't make the whole list jump. */
+ -moz-transition: height .2s ease-in;
+}
+
+contact[state="fading"] {
+ opacity: 0;
+ -moz-transition: opacity .4s ease-in 1s;
+}
+
+contact[state="collapsing"],
+buddy[state="collapsing"],
+group[collapsing="true"] {
+ height: 0;
+ -moz-transition: height .2s ease-in;
+}
+
+contact[state="collapsing"] *,
+contact[state="showing"] *,
+buddy[state="collapsing"] *,
+buddy[state="showing"] *,
+group[collapsing="true"] * {
+ display: none;
+}
+
+tooltip[type="buddy"] {
+ -moz-binding: url("chrome://instantbird/content/buddytooltip.xml#tooltip");
+}
+
+#userIcon {
+ -moz-user-focus: normal;
+}
+
+#statusTypeIcon {
+ cursor: pointer;
+ -moz-user-focus: ignore;
+}
+
+#displayName,
+#statusMessage:not([statusType="offline"]) {
+ cursor: text;
+}
+
+#displayName[editing],
+#statusMessage[editing] {
+ -moz-appearance: textfield;
+ -moz-binding: url('chrome://global/content/bindings/textbox.xml#textbox');
+}
+
+.convUnreadCount,
+.convUnreadTargetedCount,
+.hideGroupButton,
+.startChatBubble,
+.expander-up,
+.expander-down {
+ cursor: pointer;
+}
+
+.hideGroupButton,
+.startChatBubble,
+.expander-up,
+.expander-down {
+ -moz-user-focus: ignore;
+}
+
+.hideGroupButton,
+.startChatBubble
+{
+ display: none;
+}
+
+group:not([id="group-1"]):hover .hideGroupButton,
+contact[cansend]:hover .startChatBubble,
+#buddylistbox:focus > contact[cansend][selected] .startChatBubble {
+ display: -moz-box;
+}
+
+conv {
+ -moz-binding: url("chrome://instantbird/content/conv.xml#conv");
+ -moz-box-align: center;
+}
+
+.convUnreadCount[value="0"],
+.convUnreadTargetedCount[value="0"] {
+ display: none;
+}
+
+#buddyListMsg[listedConvCount="0"] > .listboxHeader {
+ display: none;
+}
+
+#buddyListMsg[listedConvCount="0"] > #convlistbox {
+ -moz-user-focus: ignore;
+}
+
+/* Make the notification bar work with narrow windows. */
+.notification-inner > hbox {
+ display: inline-block;
+}
+
+.notification-inner > hbox > .messageImage {
+ max-width: 0;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/blist.js
@@ -0,0 +1,861 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource:///modules/imStatusUtils.jsm");
+
+const events = ["buddy-authorization-request",
+ "buddy-authorization-request-canceled",
+ "contact-availability-changed",
+ "contact-added",
+ "contact-tag-added",
+ "contact-tag-removed",
+ "showing-ui-conversation",
+ "status-changed",
+ "tag-hidden",
+ "tag-shown",
+ "ui-conversation-hidden",
+ "user-display-name-changed",
+ "user-icon-changed",
+ "prpl-quit"];
+
+const showOfflineBuddiesPref = "messenger.buddies.showOffline";
+
+var gBuddyListContextMenu = null;
+
+function buddyListContextMenu(aXulMenu) {
+ this.target = document.popupNode;
+ this.menu = aXulMenu;
+ let localName = this.target.localName;
+ let hasVisibleBuddies = !!document.getElementById("buddylistbox").firstChild;
+
+ // Don't display a context menu on the headers or the drop target.
+ this.shouldDisplay =
+ localName != "label" && !this.target.hasAttribute("dummy");
+ if (!this.shouldDisplay)
+ return;
+
+ this.onContact = localName == "contact";
+ this.onBuddy = localName == "buddy";
+ this.onGroup = localName == "group";
+ this.onConv = localName == "conv";
+ let hide = !(this.onContact || this.onBuddy);
+
+ [ "context-edit-buddy-separator",
+ "context-alias",
+ "context-delete",
+ "context-tags"
+ ].forEach(function (aId) {
+ document.getElementById(aId).hidden = hide;
+ });
+
+ document.getElementById("context-hide-tag").hidden = !this.onGroup;
+
+ document.getElementById("context-visible-tags").hidden =
+ !hide || this.onConv || !hasVisibleBuddies;
+
+ let uiConv;
+ if (!hide) {
+ let contact =
+ this.onContact ? this.target.contact : this.target.buddy.contact;
+ uiConv = Services.conversations.getUIConversationByContactId(contact.id);
+ }
+ document.getElementById("context-openconversation").hidden = hide || uiConv;
+ document.getElementById("context-show-conversation").hidden = !this.onConv && !uiConv;
+ document.getElementById("context-close-conversation-separator").hidden = !this.onConv;
+ document.getElementById("context-close-conversation").hidden = !this.onConv;
+ document.getElementById("context-showlogs").hidden = hide && !this.onConv;
+
+ if (this.onGroup) {
+ document.getElementById("context-hide-tag").disabled =
+ this.target.tag.id == -1;
+ }
+ else {
+ let enumerator = this._getLogs();
+ document.getElementById("context-showlogs").disabled =
+ !enumerator || !enumerator.hasMoreElements();
+ }
+
+ document.getElementById("context-show-offline-buddies-separator").hidden =
+ this.onConv || !hasVisibleBuddies;
+
+ document.getElementById("context-show-offline-buddies").hidden =
+ this.onConv;
+
+ let detach = document.getElementById("context-detach");
+ detach.hidden = !this.onBuddy;
+ if (this.onBuddy)
+ detach.disabled = this.target.buddy.contact.getBuddies().length == 1;
+
+ document.getElementById("context-openconversation").disabled =
+ !hide && !this.target.canOpenConversation();
+
+ Components.utils.import("resource:///modules/ibTagMenu.jsm");
+ this.tagMenu = new TagMenu(this, window,
+ this.onBuddy ? this.target.contact : this.target);
+}
+
+// Prototype for buddyListContextMenu "class."
+buddyListContextMenu.prototype = {
+ openConversation: function blcm_openConversation() {
+ if (this.onContact || this.onBuddy || this.onConv)
+ this.target.openConversation();
+ },
+ closeConversation: function blcm_closeConversation() {
+ if (this.onConv)
+ this.target.closeConversation();
+ },
+ alias: function blcm_alias() {
+ if (this.onContact)
+ this.target.startAliasing();
+ else if (this.onBuddy)
+ this.target.contact.startAliasing();
+ },
+ detach: function blcm_detach() {
+ if (!this.onBuddy)
+ return;
+
+ let buddy = this.target.buddy;
+ buddy.contact.detachBuddy(buddy);
+ },
+ delete: function blcm_delete() {
+ let buddy;
+ if (this.onContact)
+ buddy = this.target.contact.preferredBuddy;
+ else if (this.onBuddy)
+ buddy = this.target.buddy;
+ else
+ return;
+
+ let bundle = document.getElementById("instantbirdBundle").stringBundle;
+ let displayName = this.target.displayName;
+ let promptTitle = bundle.formatStringFromName("contact.deletePrompt.title",
+ [displayName], 1);
+ let userName = buddy.userName;
+ if (displayName != userName)
+ displayName += " (" + userName + ")";
+ let proto = buddy.protocol.name; // FIXME build a list
+ let promptMessage = bundle.formatStringFromName("contact.deletePrompt.message",
+ [displayName, proto], 2);
+ let deleteButton = bundle.GetStringFromName("contact.deletePrompt.button");
+ let prompts = Services.prompt;
+ let flags = prompts.BUTTON_TITLE_IS_STRING * prompts.BUTTON_POS_0 +
+ prompts.BUTTON_TITLE_CANCEL * prompts.BUTTON_POS_1 +
+ prompts.BUTTON_POS_1_DEFAULT;
+ if (prompts.confirmEx(window, promptTitle, promptMessage, flags,
+ deleteButton, null, null, null, {}))
+ return;
+
+ this.target.remove();
+ },
+ addTag: function blcm_addTag(aTag) {
+ // If the contact already has the tag, addTag will return early.
+ this.tagMenu.target.contact.addTag(aTag);
+ },
+ toggleTag: function blcm_toggleTag(aTag) {
+ let contact = this.tagMenu.target.contact;
+ if (contact.getTags().some(function(t) t.id == aTag.id))
+ contact.removeTag(aTag);
+ else
+ contact.addTag(aTag);
+ },
+ _getLogs: function blcm_getLogs() {
+ if (this.onContact)
+ return Services.logs.getLogsForContact(this.target.contact, true);
+ if (this.onBuddy)
+ return Services.logs.getLogsForBuddy(this.target.buddy, true);
+ if (this.onConv)
+ return Services.logs.getLogsForConversation(this.target.conv, true);
+ return null;
+ },
+ showLogs: function blcm_showLogs() {
+ let enumerator = this._getLogs();
+ if (!enumerator)
+ return;
+ window.openDialog("chrome://instantbird/content/viewlog.xul",
+ "Logs", "chrome,resizable", {logs: enumerator},
+ this.target.displayName);
+ },
+ hideTag: function blcm_hideTag() {
+ if (!this.onGroup || this.target.tag.id == -1)
+ return;
+
+ this.target.hide();
+ },
+ visibleTagsPopupShowing: function blcm_visibleTagsPopupShowing() {
+ if (this.onBuddy || this.onContact || this.onConv)
+ return;
+
+ let popup = document.getElementById("context-visible-tags-popup");
+ let item;
+ while ((item = popup.firstChild) && item.localName != "menuseparator")
+ popup.removeChild(item);
+
+ Services.tags.getTags()
+ .forEach(function (aTag) {
+ item = document.createElement("menuitem");
+ item.setAttribute("label", aTag.name);
+ item.setAttribute("type", "checkbox");
+ let id = aTag.id;
+ item.groupId = id;
+ if (!Services.tags.isTagHidden(aTag))
+ item.setAttribute("checked", "true");
+ popup.insertBefore(item, popup.firstChild);
+ });
+
+ let otherContactsTag = document.getElementById("group-1");
+ [ "context-other-contacts-tag-separator",
+ "context-other-contacts-tag"
+ ].forEach(function (aId) {
+ document.getElementById(aId).hidden = !otherContactsTag;
+ });
+ if (otherContactsTag) {
+ // This avoids having the localizable "Other Contacts" string in
+ // both a .dtd and .properties file.
+ document.getElementById("context-other-contacts-tag").label =
+ otherContactsTag.displayName;
+ }
+ },
+ visibleTags: function blcm_visibleTags(aEvent) {
+ let id = aEvent.originalTarget.groupId;
+ if (!id)
+ return;
+ let tags = Services.tags;
+ let tag = tags.getTagById(id);
+ if (tags.isTagHidden(tag))
+ tags.showTag(tag);
+ else
+ tags.hideTag(tag);
+ },
+ toggleShowOfflineBuddies: function blcm_toggleShowOfflineBuddies() {
+ let newValue =
+ !!document.getElementById("context-show-offline-buddies")
+ .getAttribute("checked");
+ Services.prefs.setBoolPref(showOfflineBuddiesPref, newValue);
+ }
+};
+
+var buddyList = {
+ observe: function bl_observe(aSubject, aTopic, aMsg) {
+ if (aTopic == "prpl-quit") {
+ window.close();
+ return;
+ }
+
+ if (aTopic == "nsPref:changed" && aMsg == showOfflineBuddiesPref) {
+ let showOffline = Services.prefs.getBoolPref(showOfflineBuddiesPref);
+ this._showOffline = showOffline;
+ let item = document.getElementById("context-show-offline-buddies");
+ if (showOffline)
+ item.setAttribute("checked", "true");
+ else
+ item.removeAttribute("checked");
+
+ Services.tags.getTags().forEach(function (aTag) {
+ let elt = document.getElementById("group" + aTag.id);
+ if (elt)
+ elt.showOffline = showOffline;
+ else if (showOffline) {
+ if (Services.tags.isTagHidden(aTag))
+ this.showOtherContacts();
+ else
+ this.displayGroup(aTag);
+ }
+ }, this);
+ let elt = document.getElementById("group-1"); // "Other contacts"
+ if (elt)
+ elt.showOffline = showOffline;
+ return;
+ }
+
+ if (aTopic == "status-changed") {
+ this.displayCurrentStatus();
+ return;
+ }
+
+ if (aTopic == "tag-hidden") {
+ this.showOtherContacts();
+ return;
+ }
+
+ if (aTopic == "tag-shown") {
+ if (!document.getElementById("group" + aSubject.id))
+ this.displayGroup(aSubject);
+ return;
+ }
+
+ if (aTopic == "user-icon-changed") {
+ this.displayUserIcon();
+ return;
+ }
+
+ if (aTopic == "user-display-name-changed") {
+ this.displayUserDisplayName();
+ return;
+ }
+
+ if (aTopic == "ui-conversation-hidden") {
+ let convElt = document.createElement("conv");
+ let name = aSubject.title.toLowerCase();
+ let ref = this.convBox.firstChild;
+ while (ref &&
+ ref.displayName.toLowerCase().localeCompare(name) < 0)
+ ref = ref.nextSibling;
+ this.convBox.insertBefore(convElt, ref);
+ convElt.build(aSubject);
+ return;
+ }
+ if (aTopic == "showing-ui-conversation") {
+ if (this.convBox.listedConvs.hasOwnProperty(aSubject.id))
+ this.convBox.listedConvs[aSubject.id].removeNode();
+ return;
+ }
+
+ if (aTopic == "buddy-authorization-request") {
+ aSubject.QueryInterface(Ci.prplIBuddyRequest);
+ let bundle = document.getElementById("instantbirdBundle").stringBundle;
+ let label = bundle.formatStringFromName("buddy.authRequest.label",
+ [aSubject.userName], 1);
+ let value =
+ "buddy-auth-request-" + aSubject.account.id + aSubject.userName;
+ let acceptButton = {
+ accessKey: bundle.GetStringFromName("buddy.authRequest.allow.accesskey"),
+ label: bundle.GetStringFromName("buddy.authRequest.allow.label"),
+ callback: function() { aSubject.grant(); }
+ };
+ let denyButton = {
+ accessKey: bundle.GetStringFromName("buddy.authRequest.deny.accesskey"),
+ label: bundle.GetStringFromName("buddy.authRequest.deny.label"),
+ callback: function() { aSubject.deny(); }
+ };
+ let box = document.getElementById("buddyListMsg");
+ box.appendNotification(label, value, null, box.PRIORITY_INFO_HIGH,
+ [acceptButton, denyButton]);
+ window.getAttention();
+ return;
+ }
+ if (aTopic == "buddy-authorization-request-canceled") {
+ aSubject.QueryInterface(Ci.prplIBuddyRequest);
+ let value =
+ "buddy-auth-request-" + aSubject.account.id + aSubject.userName;
+ let notification =
+ document.getElementById("buddyListMsg")
+ .getNotificationWithValue(value);
+ if (notification)
+ notification.close();
+ return;
+ }
+
+ // aSubject is an imIContact
+ if (aSubject.online || this._showOffline) {
+ aSubject.getTags().forEach(function (aTag) {
+ if (Services.tags.isTagHidden(aTag))
+ this.showOtherContacts();
+ else if (!document.getElementById("group" + aTag.id))
+ this.displayGroup(aTag);
+ }, this);
+ }
+ },
+
+ displayUserIcon: function bl_displayUserIcon() {
+ let icon = Services.core.globalUserStatus.getUserIcon();
+ document.getElementById("userIcon").src = icon ? icon.spec : "";
+ },
+
+ displayUserDisplayName: function bl_displayUserDisplayName() {
+ let displayName = Services.core.globalUserStatus.displayName;
+ let elt = document.getElementById("displayName");
+ if (displayName)
+ elt.removeAttribute("usingDefault");
+ else {
+ let bundle = document.getElementById("instantbirdBundle");
+ displayName = bundle.getString("displayNameEmptyText");
+ elt.setAttribute("usingDefault", displayName);
+ }
+ elt.setAttribute("value", displayName);
+ },
+
+ displayStatusType: function bl_displayStatusType(aStatusType) {
+ document.getElementById("statusMessage")
+ .setAttribute("statusType", aStatusType);
+ let statusString = Status.toLabel(aStatusType);
+ let statusTypeIcon = document.getElementById("statusTypeIcon");
+ statusTypeIcon.setAttribute("status", aStatusType);
+ statusTypeIcon.setAttribute("tooltiptext", statusString);
+ return statusString;
+ },
+
+ displayCurrentStatus: function bl_displayCurrentStatus() {
+ let us = Services.core.globalUserStatus;
+ let status = Status.toAttribute(us.statusType);
+ let message = status == "offline" ? "" : us.statusText;
+ let statusString = this.displayStatusType(status);
+ let statusMessage = document.getElementById("statusMessage");
+ if (message)
+ statusMessage.removeAttribute("usingDefault");
+ else {
+ statusMessage.setAttribute("usingDefault", statusString);
+ message = statusString;
+ }
+ statusMessage.setAttribute("value", message);
+ statusMessage.setAttribute("tooltiptext", message);
+ },
+
+ editStatus: function bl_editStatus(aEvent) {
+ let status = aEvent.originalTarget.getAttribute("status");
+ if (status == "offline") {
+ let statusMessage = document.getElementById("statusMessage");
+ if (statusMessage.hasAttribute("editing"))
+ buddyList.finishEditStatusMessage(false);
+ Services.core.globalUserStatus.setStatus(Ci.imIStatusInfo.STATUS_OFFLINE, "");
+ }
+ else if (status)
+ this.startEditStatus(status);
+ },
+
+ startEditStatus: function bl_startEditStatus(aStatusType) {
+ let currentStatusType =
+ document.getElementById("statusTypeIcon").getAttribute("status");
+ if (aStatusType != currentStatusType) {
+ this._statusTypeBeforeEditing = currentStatusType;
+ this._statusTypeEditing = aStatusType;
+ this.displayStatusType(aStatusType);
+ }
+ this.statusMessageClick();
+ },
+
+ statusMessageClick: function bl_statusMessageClick(event) {
+ let statusTypeIcon = document.getElementById("statusTypeIcon");
+ if (event && event.button == 0) {
+ // If the mouse clicked the statusTypeIcon with the primary
+ // button, we should open the dropdown menu. (The statusMessage
+ // "covers" the icon due to its enlarged focusring.)
+ let box = statusTypeIcon.getBoundingClientRect();
+ if (event.clientX >= box.left && event.clientX < box.right &&
+ event.clientY >= box.top && event.clientY < box.bottom) {
+ this.openStatusTypePopup();
+ return;
+ }
+ }
+ let statusType = statusTypeIcon.getAttribute("status");
+ if (statusType == "offline")
+ return;
+
+ let elt = document.getElementById("statusMessage");
+ if (!elt.hasAttribute("editing")) {
+ elt.setAttribute("editing", "true");
+ elt.removeAttribute("role");
+ elt.removeAttribute("aria-haspopup");
+ elt.addEventListener("blur", this.statusMessageBlur);
+ if (elt.hasAttribute("usingDefault")) {
+ if ("_statusTypeBeforeEditing" in this &&
+ this._statusTypeBeforeEditing == "offline")
+ elt.setAttribute("value", Services.core.globalUserStatus.statusText);
+ else
+ elt.removeAttribute("value");
+ }
+ if (!("TextboxSpellChecker" in window))
+ Components.utils.import("resource:///modules/imTextboxUtils.jsm");
+ TextboxSpellChecker.registerTextbox(elt);
+ // force binding attachment by forcing layout
+ elt.getBoundingClientRect();
+ elt.select();
+ }
+
+ this.statusMessageRefreshTimer();
+ },
+
+ statusMessageRefreshTimer: function bl_statusMessageRefreshTimer() {
+ const timeBeforeAutoValidate = 20 * 1000;
+ if ("_stopEditStatusTimeout" in this)
+ clearTimeout(this._stopEditStatusTimeout);
+ this._stopEditStatusTimeout = setTimeout(this.finishEditStatusMessage,
+ timeBeforeAutoValidate, true);
+ },
+
+ statusMessageBlur: function bl_statusMessageBlur(aEvent) {
+ if (aEvent.originalTarget == document.getElementById("statusMessage").inputField)
+ buddyList.finishEditStatusMessage(true);
+ },
+
+ statusMessageKeyPress: function bl_statusMessageKeyPress(aEvent) {
+ let editing = document.getElementById("statusMessage").hasAttribute("editing");
+ if (!editing) {
+ switch (aEvent.keyCode) {
+ case aEvent.DOM_VK_DOWN:
+ buddyList.openStatusTypePopup();
+ aEvent.preventDefault();
+ return;
+
+ case aEvent.DOM_VK_TAB:
+ break;
+
+ default:
+ if (aEvent.charCode == aEvent.DOM_VK_SPACE)
+ buddyList.statusMessageClick();
+ return;
+ }
+ }
+ switch (aEvent.keyCode) {
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ buddyList.finishEditStatusMessage(true);
+ break;
+
+ case aEvent.DOM_VK_ESCAPE:
+ buddyList.finishEditStatusMessage(false);
+ break;
+
+ case aEvent.DOM_VK_TAB:
+ if (aEvent.shiftKey)
+ break;
+ // Ensure some item is selected when navigating by keyboard.
+ if (!this.selectFirstItem("convlistbox"))
+ this.selectFirstItem("buddylistbox");
+ break;
+
+ default:
+ buddyList.statusMessageRefreshTimer();
+ }
+ },
+
+ finishEditStatusMessage: function bl_finishEditStatusMessage(aSave) {
+ clearTimeout(this._stopEditStatusTimeout);
+ delete this._stopEditStatusTimeout;
+ let elt = document.getElementById("statusMessage");
+ if (aSave) {
+ let newStatus = Ci.imIStatusInfo.STATUS_UNKNOWN;
+ if ("_statusTypeEditing" in this) {
+ let statusType = this._statusTypeEditing;
+ if (statusType == "available")
+ newStatus = Ci.imIStatusInfo.STATUS_AVAILABLE;
+ else if (statusType == "unavailable")
+ newStatus = Ci.imIStatusInfo.STATUS_UNAVAILABLE;
+ else if (statusType == "offline")
+ newStatus = Ci.imIStatusInfo.STATUS_OFFLINE;
+ delete this._statusTypeBeforeEditing;
+ delete this._statusTypeEditing;
+ }
+ // apply the new status only if it is different from the current one
+ if (newStatus != Ci.imIStatusInfo.STATUS_UNKNOWN ||
+ elt.value != elt.getAttribute("value"))
+ Services.core.globalUserStatus.setStatus(newStatus, elt.value);
+ }
+ else if ("_statusTypeBeforeEditing" in this) {
+ this.displayStatusType(this._statusTypeBeforeEditing);
+ delete this._statusTypeBeforeEditing;
+ delete this._statusTypeEditing;
+ }
+
+ if (elt.hasAttribute("usingDefault"))
+ elt.setAttribute("value", elt.getAttribute("usingDefault"));
+ TextboxSpellChecker.unregisterTextbox(elt);
+ elt.removeAttribute("editing");
+ elt.setAttribute("role", "button");
+ elt.setAttribute("aria-haspopup", "true");
+ elt.removeEventListener("blur", this.statusMessageBlur, false);
+ if (!elt.getAttribute("focused"))
+ return;
+ // Force layout to remove input binding.
+ elt.getBoundingClientRect();
+ elt.focus();
+ },
+
+ openStatusTypePopup: function() {
+ let button = document.getElementById("statusTypeIcon");
+ document.getElementById("setStatusTypeMenupopup").openPopup(button, "after_start");
+ },
+
+ onStatusTypePopupShown: function() {
+ // Without this, the #userIcon gains focus when the popup is opened
+ // from the #statusMessage whenever the #statusMessage has been edited
+ // at least once (thus changing the binding).
+ document.getElementById("statusMessage").focus();
+ },
+
+ userIconKeyPress: function bl_userIconKeyPress(aEvent) {
+ switch (aEvent.keyCode) {
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ this.userIconClick();
+ break;
+
+ case aEvent.DOM_VK_TAB:
+ if (!aEvent.shiftKey)
+ break;
+ // Ensure a contact is selected when navigating by keyboard.
+ this.selectFirstItem("buddylistbox");
+ break;
+
+ default:
+ if (aEvent.charCode == aEvent.DOM_VK_SPACE)
+ this.userIconClick();
+ break;
+ }
+ },
+
+ userIconClick: function bl_userIconClick() {
+ const nsIFilePicker = Components.interfaces.nsIFilePicker;
+ let fp = Components.classes["@mozilla.org/filepicker;1"]
+ .createInstance(nsIFilePicker);
+ let bundle = document.getElementById("instantbirdBundle");
+ fp.init(window, bundle.getString("userIconFilePickerTitle"),
+ nsIFilePicker.modeOpen);
+ fp.appendFilters(nsIFilePicker.filterImages);
+ if (fp.show() == nsIFilePicker.returnOK)
+ Services.core.globalUserStatus.setUserIcon(fp.file);
+ },
+
+ displayNameClick: function bl_displayNameClick() {
+ let elt = document.getElementById("displayName");
+ if (!elt.hasAttribute("editing")) {
+ elt.setAttribute("editing", "true");
+ elt.removeAttribute("role");
+ if (elt.hasAttribute("usingDefault"))
+ elt.removeAttribute("value");
+ elt.addEventListener("blur", this.displayNameBlur);
+ // force binding attachment by forcing layout
+ elt.getBoundingClientRect();
+ elt.select();
+ }
+
+ this.displayNameRefreshTimer();
+ },
+
+ _stopEditDisplayNameTimeout: 0,
+ displayNameRefreshTimer: function bl_displayNameRefreshTimer() {
+ const timeBeforeAutoValidate = 20 * 1000;
+ clearTimeout(this._stopEditDisplayNameTimeout);
+ this._stopEditDisplayNameTimeout =
+ setTimeout(this.finishEditDisplayName, timeBeforeAutoValidate, true);
+ },
+
+ displayNameBlur: function bl_displayNameBlur(aEvent) {
+ if (aEvent.originalTarget == document.getElementById("displayName").inputField)
+ buddyList.finishEditDisplayName(true);
+ },
+
+ displayNameKeyPress: function bl_displayNameKeyPress(aEvent) {
+ let editing = document.getElementById("displayName").hasAttribute("editing");
+ if (!editing) {
+ if (aEvent.charCode == aEvent.DOM_VK_SPACE)
+ buddyList.displayNameClick();
+ return;
+ }
+ switch (aEvent.keyCode) {
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ buddyList.finishEditDisplayName(true);
+ break;
+
+ case aEvent.DOM_VK_ESCAPE:
+ buddyList.finishEditDisplayName(false);
+ break;
+
+ default:
+ buddyList.displayNameRefreshTimer();
+ }
+ },
+
+ finishEditDisplayName: function bl_finishEditDisplayName(aSave) {
+ clearTimeout(this._stopEditDisplayNameTimeout);
+ let elt = document.getElementById("displayName");
+ // Apply the new display name only if it is different from the current one.
+ if (aSave && elt.value != elt.getAttribute("value"))
+ Services.core.globalUserStatus.displayName = elt.value;
+ else if (elt.hasAttribute("usingDefault"))
+ elt.setAttribute("value", elt.getAttribute("usingDefault"));
+
+ elt.removeAttribute("editing");
+ elt.setAttribute("role", "button");
+ elt.removeEventListener("blur", this.displayNameBlur, false);
+ if (!elt.getAttribute("focused"))
+ return;
+ // Force layout to remove input binding.
+ elt.getBoundingClientRect();
+ elt.focus();
+ },
+
+ load: function bl_load() {
+ var blistWindows = Services.wm.getEnumerator("Messenger:blist");
+ while (blistWindows.hasMoreElements()) {
+ var win = blistWindows.getNext();
+ if (win != window) {
+ win.QueryInterface(Ci.nsIDOMWindow).focus();
+ window.close();
+ return;
+ }
+ }
+
+ // Move the window to the right of the screen on new profiles.
+ let docElt = document.documentElement;
+ if (!docElt.hasAttribute("height")) {
+ docElt.setAttribute("height", screen.availHeight || 600);
+ let width = parseInt(docElt.getAttribute("width"));
+ window.moveTo(screen.availLeft + screen.availWidth - width,
+ screen.availTop);
+ }
+
+ // TODO remove this once we cleanup the way the menus are inserted
+ let menubar = document.getElementById("blistMenubar");
+ let statusArea = document.getElementById("statusArea");
+ statusArea.parentNode.insertBefore(menubar, statusArea);
+
+ buddyList.displayCurrentStatus();
+ buddyList.displayUserDisplayName();
+ buddyList.displayUserIcon();
+
+ let prefBranch = Services.prefs;
+ buddyList._showOffline = prefBranch.getBoolPref(showOfflineBuddiesPref);
+ if (buddyList._showOffline) {
+ document.getElementById("context-show-offline-buddies")
+ .setAttribute("checked", "true");
+ }
+
+ let blistBox = document.getElementById("buddylistbox");
+ blistBox.removeGroup = function(aGroupElt) {
+ let index = buddyList._displayedGroups.indexOf(aGroupElt);
+ if (index != -1)
+ buddyList._displayedGroups.splice(index, 1);
+ this.removeChild(aGroupElt);
+ };
+ let showOtherContacts = false;
+ Services.tags.getTags().forEach(function (aTag) {
+ if (Services.tags.isTagHidden(aTag))
+ showOtherContacts = true;
+ else
+ buddyList.displayGroup(aTag);
+ });
+ if (showOtherContacts)
+ buddyList.showOtherContacts();
+ blistBox.focus();
+
+ buddyList.convBox = document.getElementById("convlistbox");
+ buddyList.convBox.listedConvs = {};
+ buddyList.convBox._updateListConvCount = function() {
+ let count = Object.keys(this.listedConvs).length;
+ this.parentNode.setAttribute("listedConvCount", count);
+ }.bind(buddyList.convBox);
+ let convs = Services.conversations.getUIConversations();
+ if (convs.length != 0) {
+ if (!("Conversations" in window))
+ Components.utils.import("resource:///modules/imWindows.jsm");
+ convs.sort(function(a, b)
+ a.title.toLowerCase().localeCompare(b.title.toLowerCase()));
+ for each (let conv in convs) {
+ if (!Conversations.isUIConversationDisplayed(conv)) {
+ let convElt = document.createElement("conv");
+ buddyList.convBox.appendChild(convElt);
+ convElt.build(conv);
+ }
+ }
+ buddyList.convBox._updateListConvCount();
+ }
+ MutationObserver(buddyList.convBox._updateListConvCount)
+ .observe(buddyList.convBox, {childList: true});
+
+ prefBranch.addObserver(showOfflineBuddiesPref, buddyList, false);
+ for each (let event in events)
+ Services.obs.addObserver(buddyList, event, false);
+
+ this.addEventListener("unload", buddyList.unload);
+ },
+ _displayedGroups: [],
+ _getGroupIndex: function(aName) {
+ let start = 0;
+ let end = this._displayedGroups.length;
+ let name = aName.toLowerCase();
+ while (start < end) {
+ let middle = start + Math.floor((end - start) / 2);
+ if (name < this._displayedGroups[middle].displayName.toLowerCase())
+ end = middle;
+ else
+ start = middle + 1;
+ }
+ return end;
+ },
+ displayGroup: function(aTag) {
+ let blistBox = document.getElementById("buddylistbox");
+ let groupElt = document.createElement("group");
+ let index;
+ let ref = null;
+ if (aTag.id != -1) {
+ index = this._getGroupIndex(aTag.name);
+ if (index == this._displayedGroups.length)
+ ref = document.getElementById("group-1"); // 'Other Contacts'
+ else
+ ref = this._displayedGroups[index];
+ }
+ blistBox.insertBefore(groupElt, ref);
+
+ if (this._showOffline)
+ groupElt._showOffline = true;
+ if (!groupElt.build(aTag))
+ blistBox.removeChild(groupElt);
+ else if (index !== undefined)
+ this._displayedGroups.splice(index, 0, groupElt);
+ },
+ _showOtherContactsRequested: false,
+ showOtherContacts: function bl_showOtherContacts() {
+ if (this._showOtherContactsRequested)
+ return;
+ this._showOtherContactsRequested = true;
+ setTimeout(function(aSelf) {
+ if (!document.getElementById("group-1"))
+ aSelf.displayGroup(Services.tags.otherContactsTag);
+ aSelf._showOtherContactsRequested = false;
+ }, 0, this);
+ },
+ onblur: function bl_onblur() {
+ // Clear the buddy list selection. Contacts expand to two lines
+ // when selected, but only when the buddy list has focus. This makes
+ // it hard to select the right contact by clicking on an unfocused
+ // contact list, as the contact will reexpand before the click is handled.
+ document.getElementById("buddylistbox").clearSelection();
+ },
+ unload: function bl_unload() {
+ for each (let event in events)
+ Services.obs.removeObserver(buddyList, event);
+ Services.prefs.removeObserver(showOfflineBuddiesPref, buddyList);
+ },
+
+ selectFirstItem: function (aListboxID) {
+ let listbox = document.getElementById(aListboxID);
+ if (!listbox.itemCount)
+ return false;
+ if (listbox.selectedIndex == -1)
+ listbox.selectedIndex = 0;
+ return true;
+ },
+
+ // Handle key pressing
+ keyPress: function bl_keyPress(aEvent) {
+ let target = aEvent.target;
+ while (target && target.localName != "richlistbox")
+ target = target.parentNode;
+ if (aEvent.keyCode == aEvent.DOM_VK_TAB) {
+ // Ensure some item is selected when navigating by keyboard.
+ if (target.id == "convlistbox" && !aEvent.shiftKey)
+ this.selectFirstItem("buddylistbox");
+ if (target.id == "buddylistbox" && aEvent.shiftKey)
+ this.selectFirstItem("convlistbox");
+ return;
+ }
+ var item = target.selectedItem;
+ if (!item || !item.parentNode) // empty list or item no longer in the list
+ return;
+ item.keyPress(aEvent);
+ },
+
+ buddylistboxFocus: function() {
+ let selectedItem = document.getElementById("buddylistbox").selectedItem;
+ if (selectedItem) {
+ // Ensure binding changes immediately to avoid the firing of a
+ // spurious accessibility focus event referring to the old binding that
+ // causes problems for screen readers (BIO bug 1626, BMO bug 786508)
+ selectedItem.getBoundingClientRect();
+ }
+ }
+};
+
+this.addEventListener("load", buddyList.load);
new file mode 100644
--- /dev/null
+++ b/im/content/blist.xul
@@ -0,0 +1,181 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/blist.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/blist.css" type="text/css"?>
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+
+<!DOCTYPE window [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %instantbirdDTD;
+ %brandDTD;
+]>
+
+<window
+ id = "blistWindow"
+ windowtype="Messenger:blist"
+ title = "&brandShortName;"
+ width = "200"
+ persist= "width height screenX screenY storeScreenX storeScreenY"
+#ifndef XP_MACOSX
+ onclose= "event.preventDefault(); goQuitApplication();"
+#endif
+ onblur = "buddyList.onblur();"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/blist.js"/>
+
+ <stringbundle id="instantbirdBundle" src="chrome://instantbird/locale/instantbird.properties"/>
+
+#include menus.xul.inc
+
+#ifdef XP_MACOSX
+ <commandset id="blistCommands">
+ <command id="cmd_close" oncommand="window.close();"/>
+ </commandset>
+
+ <keyset id="blistKeys">
+ <key id="key_close" key="w" modifiers="accel" command="cmd_close"/>
+ </keyset>
+
+#endif
+ <popupset id="mainPopupSet">
+ <tooltip id="buddyTooltip" type="buddy"
+ onpopupshowing="return !('_droptarget' in window);"/>
+
+ <menupopup id="buddyListContextMenu"
+ onpopupshowing="if (event.target != this) return true; gBuddyListContextMenu = new buddyListContextMenu(this); return gBuddyListContextMenu.shouldDisplay;"
+ onpopuphiding="if (event.target == this) { gBuddyListContextMenu = null; }">
+ <menuitem id="context-openconversation"
+ label="&openConversationCmd.label;"
+ accesskey="&openConversationCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.openConversation();"/>
+ <menuitem id="context-show-conversation"
+ label="&showConversationCmd.label;"
+ accesskey="&showConversationCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.openConversation();"/>
+ <menuitem id="context-showlogs"
+ label="&showLogsCmd.label;"
+ accesskey="&showLogsCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.showLogs();"/>
+ <menuseparator id="context-close-conversation-separator"/>
+ <menuitem id="context-close-conversation"
+ label="&closeConversationCmd.label;"
+ accesskey="&closeConversationCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.closeConversation();"/>
+ <menuseparator id="context-edit-buddy-separator"/>
+ <menuitem id="context-alias"
+ label="&aliasCmd.label;"
+ accesskey="&aliasCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.alias();"/>
+ <menuitem id="context-detach"
+ label="&detachCmd.label;"
+ accesskey="&detachCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.detach();"/>
+ <menuitem id="context-delete"
+ label="&deleteCmd.label;"
+ accesskey="&deleteCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.delete();"/>
+ <menu id="context-tags"
+ label="&tagsCmd.label;"
+ accesskey="&tagsCmd.accesskey;">
+ <menupopup id="context-tags-popup"
+ oncommand="gBuddyListContextMenu.tagMenu.tag(event, gBuddyListContextMenu.toggleTag.bind(gBuddyListContextMenu));"
+ onpopupshowing="gBuddyListContextMenu.tagMenu.tagsPopupShowing();">
+ <menuseparator id="context-create-tag-separator"/>
+ <menuitem id="context-create-tag"
+ label="&addNewTagCmd.label;"
+ accesskey="&addNewTagCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.tagMenu.addNewTag(gBuddyListContextMenu.addTag.bind(gBuddyListContextMenu));"/>
+ </menupopup>
+ </menu>
+ <menuitem id="context-hide-tag"
+ label="&hideTagCmd.label;"
+ accesskey="&hideTagCmd.accesskey;"
+ oncommand="gBuddyListContextMenu.hideTag();"/>
+ <menu id="context-visible-tags"
+ label="&visibleTagsCmd.label;"
+ accesskey="&visibleTagsCmd.accesskey;">
+ <menupopup id="context-visible-tags-popup"
+ oncommand="gBuddyListContextMenu.visibleTags(event);"
+ onpopupshowing="gBuddyListContextMenu.visibleTagsPopupShowing();">
+ <menuseparator id="context-other-contacts-tag-separator"/>
+ <menuitem id="context-other-contacts-tag"
+ type="checkbox" checked="true" disabled="true"/>
+ </menupopup>
+ </menu>
+ <menuseparator id="context-show-offline-buddies-separator"/>
+ <menuitem id="context-show-offline-buddies"
+ label="&showOfflineContactsCmd.label;"
+ accesskey="&showOfflineContactsCmd.accesskey;"
+ type="checkbox"
+ oncommand="gBuddyListContextMenu.toggleShowOfflineBuddies();"/>
+ </menupopup>
+ </popupset>
+
+ <toolbox id="mainToolbox">
+ <toolbar id="statusArea">
+ <stack id="statusImageStack">
+ <image id="userIcon" role="button"
+ aria-label="&userIcon.label;" tooltiptext="&userIcon.label;"
+ onclick="buddyList.userIconClick();"
+ onkeypress="buddyList.userIconKeyPress(event);"/>
+ <button type="menu" id="statusTypeIcon" status="available">
+ <menupopup id="setStatusTypeMenupopup"
+ onpopupshown="buddyList.onStatusTypePopupShown();"
+ oncommand="buddyList.editStatus(event);">
+ <menuitem id="statusTypeAvailable" label="&available;"
+ status="available" class="menuitem-iconic"
+ accesskey="&available.accesskey;"/>
+ <menuitem id="statusTypeUnavailable" label="&unavailable;"
+ status="unavailable" class="menuitem-iconic"
+ accesskey="&unavailable.accesskey;"/>
+ <menuseparator id="statusTypeOfflineSeparator"/>
+ <menuitem id="statusTypeOffline" label="&offline;"
+ status="offline" class="menuitem-iconic"
+ accesskey="&offline.accesskey;"/>
+ </menupopup>
+ </button>
+ </stack>
+ <stack id="displayNameAndstatusMessageStack" flex="1">
+ <vbox flex="1" pack="center">
+ <label id="displayName" role="button"
+ onclick="buddyList.displayNameClick();"
+ onkeypress="buddyList.displayNameKeyPress(event);"/>
+ </vbox>
+ <label id="statusMessage" crop="end" value=""
+ aria-haspopup="true" role="button"
+ onclick="buddyList.statusMessageClick(event);"
+ onkeypress="buddyList.statusMessageKeyPress(event);"/>
+ </stack>
+ </toolbar>
+ </toolbox>
+
+ <notificationbox id="buddyListMsg" flex="1" listedConvCount="0"
+ context="buddyListContextMenu">
+ <label id="convsHeader" value="&convsHeader.label;"
+ control="convlistbox"
+ crop="end" class="listboxHeader"/>
+ <richlistbox id="convlistbox"
+ onkeypress="buddyList.keyPress(event);"
+ tooltip="buddyTooltip"/>
+ <label id="contactsHeader" value="&contactsHeader.label;"
+ control="buddylistbox"
+ crop="end" class="listboxHeader"/>
+ <richlistbox id="buddylistbox"
+ onkeypress="buddyList.keyPress(event);"
+ onfocus="buddyList.buddylistboxFocus();"
+ tooltip="buddyTooltip"/>
+ <spacer id="listSpacer" flex="1"
+ onclick='document.getElementById("buddylistbox").focus();'/>
+ </notificationbox>
+
+ <statusbar id="blistWindow-statusbar">
+ <statusbarpanel id="status" label="" crop="end" flex="1"/>
+ </statusbar>
+</window>
new file mode 100644
--- /dev/null
+++ b/im/content/buddy.xml
@@ -0,0 +1,280 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd" >
+ %instantbirdDTD;
+]>
+
+<bindings id="buddyBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+ <binding id="buddy" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content align="center">
+ <xul:stack class="prplBuddyIcon" mousethrough="always">
+ <xul:image class="protoIcon" xbl:inherits="src=iconPrpl,status"/>
+ <xul:image class="statusIcon" xbl:inherits="status"/>
+ </xul:stack>
+ <xul:label crop="end" flex="1" mousethrough="always"
+ anonid="displayname" class="buddyDisplayName blistDisplayName"
+ xbl:inherits="value=displayname,status"/>
+ <xul:label crop="end" flex="100000" mousethrough="always"
+ anonid="statusText" class="buddyStatusText"
+ xbl:inherits="value=statusText"/>
+ </content>
+ <implementation implements="nsIObserver">
+
+ <destructor>
+ <![CDATA[
+ if (this.buddy) {
+ this.buddy.removeObserver(this);
+ delete this.buddy;
+ }
+ ]]>
+ </destructor>
+
+ <method name="build">
+ <parameter name="aBuddy"/>
+ <parameter name="aContact"/>
+ <body>
+ <![CDATA[
+ this.buddy = aBuddy;
+ this.contact = aContact;
+ this.buddy.addObserver(this);
+
+ this.state = "showing";
+ this.addEventListener("transitionend", this._transitionEnd, true);
+ ]]>
+ </body>
+ </method>
+
+ <property name="displayName"
+ onget="return this.buddy.displayName;"/>
+
+ <property name="state"
+ onget="return this.getAttribute('state');"
+ onset="this.setAttribute('state', val); return val;"/>
+
+ <!-- nsIObserver implementation -->
+ <method name="observe">
+ <parameter name="aSubject"/>
+ <parameter name="aTopic"/>
+ <parameter name="aData"/>
+ <body>
+ <![CDATA[
+ if (aTopic == "buddy-display-name-changed" ||
+ aTopic == "buddy-status-changed") {
+ this.update();
+ return;
+ }
+
+ if (aTopic == "buddy-removed" ||
+ aTopic == "buddy-moved-out-of-contact")
+ this.removeNode();
+ ]]>
+ </body>
+ </method>
+
+ <method name="update">
+ <body>
+ <![CDATA[
+ this.setAttribute("displayname", this.buddy.displayName);
+
+ let statusText = this.buddy.statusText;
+ if (statusText)
+ statusText = " - " + statusText;
+ this.setAttribute("statusText", statusText);
+ this.setAttribute("status", Status.toAttribute(this.buddy.statusType));
+
+ let proto = this.buddy.protocol;
+ this.setAttribute("iconPrpl", proto.iconBaseURI + "icon.png");
+ ]]>
+ </body>
+ </method>
+
+ <method name="_transitionEnd">
+ <body>
+ <![CDATA[
+ let state = this.state;
+ if (state == "showing") {
+ this.update();
+ this.state = "visible";
+ }
+ else if (state == "collapsing")
+ this.parentNode.removeChild(this);
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeNode">
+ <body>
+ <![CDATA[
+ if (!("buddy" in this))
+ return;
+ this.buddy.removeObserver(this);
+ delete this.buddy;
+ if (this.state == "visible") // FIXME check the heigh instead
+ this.state = "collapsing";
+ else
+ this.parentNode.removeChild(this);
+ ]]>
+ </body>
+ </method>
+
+ <method name="remove">
+ <body>
+ <![CDATA[
+ this.buddy.remove();
+ ]]>
+ </body>
+ </method>
+
+ <method name="canOpenConversation">
+ <body>
+ <![CDATA[
+ return this.buddy.canSendMessage;
+ ]]>
+ </body>
+ </method>
+
+ <method name="openConversation">
+ <body>
+ <![CDATA[
+ if (!("Conversations" in window))
+ Components.utils.import("resource:///modules/imWindows.jsm");
+ Conversations.focusConversation(this.buddy.createConversation());
+ ]]>
+ </body>
+ </method>
+
+ <method name="_DragOk">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ aEvent.preventDefault();
+ if (this.hasAttribute("droptarget"))
+ return;
+ if ("_droptarget" in window)
+ window._droptarget.removeAttribute("droptarget");
+ window._droptarget = this;
+ this.setAttribute("droptarget", "true");
+ ]]>
+ </body>
+ </method>
+ <method name="_DragLeave">
+ <body>
+ <![CDATA[
+ if (!this.hasAttribute("droptarget"))
+ return;
+ delete window._droptarget;
+ this.removeAttribute("droptarget");
+ ]]>
+ </body>
+ </method>
+ <method name="_checkDrag">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ if (this.state != "visible")
+ return;
+
+ let dt = aEvent.dataTransfer;
+ if (dt.types.contains("application/x-ib-contact")) {
+ if (dt.getData("application/x-ib-contact") != this.buddy.contact.id)
+ this._DragOk(aEvent);
+ aEvent.stopPropagation();
+ }
+ else if (dt.types.contains("application/x-ib-buddy")) {
+ if (dt.getData("application/x-ib-buddy") != this.buddy.id)
+ this._DragOk(aEvent);
+ aEvent.stopPropagation();
+ }
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="click" clickcount="2">
+ <![CDATA[
+ if (canOpenConversation())
+ openConversation();
+ event.stopPropagation();
+ ]]>
+ </handler>
+
+ <handler event="dragstart">
+ <![CDATA[
+ if (this.state != "visible")
+ return;
+
+ event.dataTransfer.setData("application/x-ib-buddy",
+ this.buddy.id);
+ event.stopPropagation();
+ ]]>
+ </handler>
+ <handler event="drop">
+ <![CDATA[
+ if (this.hasAttribute("dummy")) {
+ // Droppped onto the drop target. The event will bubble to
+ // the contact.
+ return;
+ }
+ let contact = this.buddy.contact;
+ let dt = event.dataTransfer;
+ if (dt.types.contains("application/x-ib-contact")) {
+ let id = dt.getData("application/x-ib-contact");
+ contact.mergeContact(Services.contacts.getContactById(id));
+ }
+ else if (dt.types.contains("application/x-ib-buddy")) {
+ let id = dt.getData("application/x-ib-buddy");
+ let from = Services.contacts.getBuddyById(id);
+ if (from.contact.id != contact.id)
+ contact.adoptBuddy(from);
+ contact.moveBuddyBefore(from, this.buddy);
+ }
+ else
+ throw "Invalid drop on buddy!";
+ event.stopPropagation();
+ this._DragLeave();
+ ]]>
+ </handler>
+ <handler event="dragenter">
+ <![CDATA[
+ this._checkDrag(event);
+ ]]>
+ </handler>
+ <handler event="dragover">
+ <![CDATA[
+ this._checkDrag(event);
+ ]]>
+ </handler>
+ <handler event="dragleave">
+ <![CDATA[
+ this._DragLeave();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+
+ <binding id="buddy-dummy" extends="chrome://instantbird/content/buddy.xml#buddy">
+ <content align="center">
+ <xul:image class="dummyBuddyIcon"/>
+ <xul:label crop="end" flex="1" class="buddyDisplayName dummyBuddyLabel"
+ value="&contactDropTarget2;" tooltiptext="&contactDropTarget2;"/>
+ </content>
+ <implementation>
+ <method name="removeNode">
+ <body>
+ <![CDATA[
+ this.parentNode.removeChild(this);
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/buddytooltip.css
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.userIcon:not([src]),
+.statusTypeIcon:not([status]) {
+ display: none;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/buddytooltip.xml
@@ -0,0 +1,473 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings>
+
+<bindings id="buddyTooltipBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+ <binding id="tooltip" extends="chrome://global/content/bindings/popup.xml#tooltip">
+ <resources>
+ <stylesheet src="chrome://instantbird/content/buddytooltip.css"/>
+ <stylesheet src="chrome://instantbird/skin/buddytooltip.css"/>
+ </resources>
+ <content noautohide="true" orient="vertical">
+ <children>
+ <xul:label class="tooltip-label" xbl:inherits="xbl:text=label" flex="1"/>
+ </children>
+ <xul:vbox id="largeTooltip">
+ <xul:hbox align="start" crop="end" flex="1">
+ <xul:vbox flex="1">
+ <xul:stack>
+ <xul:image class="userIcon" anonid="userIcon"/>
+ <xul:image class="statusTypeIcon" xbl:inherits="status,left"/>
+ </xul:stack>
+ <xul:spacer flex="1"/>
+ </xul:vbox>
+ <xul:stack class="displayNameMessageBox" flex="1">
+ <xul:vbox flex="1">
+ <xul:hbox align="start" flex="1">
+ <xul:description class="tooltipDisplayName" flex="1" crop="end"
+ xbl:inherits="value=displayname"/>
+ <xul:image class="tooltipProtoIcon"
+ xbl:inherits="src=iconPrpl,status"/>
+ </xul:hbox>
+ <xul:spacer flex="1"/>
+ </xul:vbox>
+ <xul:description class="tooltipMessage" anonid="tooltipMessage"
+ xbl:inherits="noTopic"/>
+ </xul:stack>
+ </xul:hbox>
+ <xul:grid>
+ <xul:columns>
+ <xul:column/>
+ <xul:column flex="1"/>
+ </xul:columns>
+ <xul:rows class="tooltipRows" anonid="tooltiprows"/>
+ </xul:grid>
+ <xul:vbox class="tooltipBuddies" anonid="buddies"/>
+ </xul:vbox>
+ </content>
+ <implementation implements="nsIObserver, nsIDOMEventListener">
+ <property name="bundle">
+ <getter>
+ <![CDATA[
+ if (!this._bundle) {
+ this._bundle =
+ Services.strings.createBundle("chrome://instantbird/locale/buddytooltip.properties");
+ }
+ return this._bundle;
+ ]]>
+ </getter>
+ </property>
+
+ <field name="_buddy">null</field>
+ <property name="buddy" onget="return this._buddy;">
+ <setter>
+ <![CDATA[
+ if (val == this._buddy)
+ return val;
+
+ if (!val)
+ this._buddy.buddy.removeObserver(this);
+ else
+ val.buddy.addObserver(this);
+
+ return (this._buddy = val);
+ ]]>
+ </setter>
+ </property>
+
+ <field name="_contact">null</field>
+ <property name="contact" onget="return this._contact;">
+ <setter>
+ <![CDATA[
+ if (val == this._contact)
+ return val;
+
+ if (!val)
+ this._contact.removeObserver(this);
+ else
+ val.addObserver(this);
+
+ return (this._contact = val);
+ ]]>
+ </setter>
+ </property>
+
+ <field name="elt">null</field>
+
+ <property name="rows">
+ <getter>
+ <![CDATA[
+ if (!("_rows" in this)) {
+ this._rows =
+ document.getAnonymousElementByAttribute(this, "anonid",
+ "tooltiprows");
+ }
+ return this._rows;
+ ]]>
+ </getter>
+ </property>
+
+ <method name="setBuddyIcon">
+ <parameter name="aSrc"/>
+ <body>
+ <![CDATA[
+ var img = document.getAnonymousElementByAttribute(this, "anonid",
+ "userIcon");
+ if (aSrc)
+ img.src = aSrc;
+ else
+ img.removeAttribute("src");
+ ]]>
+ </body>
+ </method>
+
+ <method name="setMessage">
+ <parameter name="aMessage"/>
+ <body>
+ <![CDATA[
+ // Setting the textContent directly allows text wrapping.
+ var msg = document.getAnonymousElementByAttribute(this, "anonid",
+ "tooltipMessage");
+ msg.textContent = aMessage;
+ ]]>
+ </body>
+ </method>
+
+ <method name="reset">
+ <body>
+ <![CDATA[
+ var row;
+ while ((row = this.rows.firstChild))
+ this.rows.removeChild(row);
+ ]]>
+ </body>
+ </method>
+
+ <method name="addRow">
+ <parameter name="aLabel"/>
+ <parameter name="aValue"/>
+ <body>
+ <![CDATA[
+ const XULNS =
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+ var row = document.createElementNS(XULNS, "row");
+ var label = document.createElementNS(XULNS, "label");
+ label.className = "header";
+ label.setAttribute("value", aLabel);
+ row.appendChild(label);
+ label = document.createElementNS(XULNS, "description");
+ label.textContent = aValue;
+ row.appendChild(label);
+ row.setAttribute("align", "baseline");
+ this.rows.appendChild(row);
+ ]]>
+ </body>
+ </method>
+
+ <method name="addSeparator">
+ <body>
+ <![CDATA[
+ const XULNS =
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+ var row = document.createElementNS(XULNS, "row");
+ var separator = document.createElementNS(XULNS, "separator");
+ separator.className = "thin";
+ row.appendChild(separator);
+ this.rows.appendChild(row);
+ ]]>
+ </body>
+ </method>
+
+ <method name="requestBuddyInfo">
+ <parameter name="aAccount"/>
+ <parameter name="aObservedName"/>
+ <body>
+ <![CDATA[
+ this.observedUserInfo = aObservedName;
+ Services.obs.addObserver(this, "user-info-received", false);
+ aAccount.requestBuddyInfo(aObservedName);
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateTooltipFromBuddy">
+ <parameter name="aBuddy"/>
+ <parameter name="aElt"/>
+ <body>
+ <![CDATA[
+ this.buddy = aBuddy;
+ this.elt = aElt;
+
+ this.reset();
+ let name = aBuddy.userName;
+ let displayName = aBuddy.displayName;
+ this.setAttribute("displayname", displayName);
+ let account = aBuddy.account;
+ this.setAttribute("iconPrpl", account.protocol.iconBaseURI + "icon.png");
+ let status = aElt.getAttribute("status");
+ if (status) {
+ this.setAttribute("status", status);
+ this.setMessage(Status.toLabel(status));
+ }
+ else {
+ this.setAttribute("status", "unknown");
+ this.setMessage(Status.toLabel("unknown"));
+ }
+ this.setBuddyIcon(aBuddy.buddyIconFilename);
+
+ if (displayName != name)
+ this.addRow(this.bundle.GetStringFromName("buddy.username"), name);
+
+ this.addRow(this.bundle.GetStringFromName("buddy.account"), account.name);
+
+ var loggedIn = aBuddy.loggedIn;
+ if (loggedIn)
+ this.addRow(this.bundle.GetStringFromName("buddy.loggedIn"), loggedIn);
+
+ // Technically there is no reason to restrict this to JS-IRC. But
+ // there is currently no filtering mechanism in place to select which
+ // of the returned fields are to be added to the tooltip for the other
+ // protocols (libpurple in particular).
+ if (account.protocol.id == "prpl-irc")
+ this.requestBuddyInfo(account, aBuddy.normalizedName);
+
+ var tooltipInfo = aBuddy.getTooltipInfo();
+ if (tooltipInfo)
+ this.appendTooltipInfo(tooltipInfo);
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <method name="appendTooltipInfo">
+ <parameter name="aTooltipInfo"/>
+ <body>
+ <![CDATA[
+ while (aTooltipInfo.hasMoreElements()) {
+ var elt =
+ aTooltipInfo.getNext().QueryInterface(Ci.prplITooltipInfo);
+ switch (elt.type) {
+ case Ci.prplITooltipInfo.pair:
+ case Ci.prplITooltipInfo.sectionHeader:
+ this.addRow(elt.label, elt.value);
+ break;
+ case Ci.prplITooltipInfo.sectionBreak:
+ this.addSeparator();
+ break;
+ }
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateTooltipFromContact">
+ <parameter name="aContact"/>
+ <parameter name="aElt"/>
+ <body>
+ <![CDATA[
+ this.contact = aContact;
+ this.elt = aElt;
+
+ this.updateTooltipFromBuddy(aContact.preferredBuddy.preferredAccountBuddy, aElt);
+
+ this.addRow(this.bundle.GetStringFromName("contact.tags"),
+ aContact.getTags().map(function (t) t.name).join(", "));
+
+ let buddies = this.contact.getBuddies();
+ if (buddies.length <= 1)
+ return true;
+
+ let buddiesElt = document.getAnonymousElementByAttribute(this, "anonid",
+ "buddies");
+ let sep = document.createElement("separator");
+ sep.setAttribute("class", "groove tooltipSeparator");
+ buddiesElt.appendChild(sep);
+
+ for each (let buddy in buddies) {
+ let buddyElt = document.createElement("buddy");
+ buddiesElt.appendChild(buddyElt);
+ buddyElt.build(buddy, this);
+ }
+
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateTooltipFromConversation">
+ <parameter name="aConv"/>
+ <parameter name="aElt"/>
+ <body>
+ <![CDATA[
+ if (!aConv.isChat && aConv.buddy)
+ return this.updateTooltipFromBuddy(aConv.buddy, aElt);
+
+ this.elt = aElt;
+ this.reset();
+ this.setAttribute("displayname", aConv.name);
+ let account = aConv.account;
+ this.setAttribute("iconPrpl", account.protocol.iconBaseURI + "icon.png");
+ this.setBuddyIcon(null);
+ if (aConv.isChat) {
+ this.setAttribute("status", "chat");
+ if (!aConv.account.connected || aConv.left)
+ this.setAttribute("left", true);
+ let topic = aConv.topic;
+ if (!topic) {
+ this.setAttribute("noTopic", true);
+ const kBundleName = "chrome://instantbird/locale/instantbird.properties";
+ topic = Services.strings.createBundle(kBundleName)
+ .GetStringFromName("noTopic");
+ }
+ this.setMessage(topic);
+ }
+ else {
+ this.setAttribute("status", "unknown");
+ this.setMessage(Status.toLabel("unknown"));
+ }
+ this.addRow(this.bundle.GetStringFromName("buddy.account"), account.name);
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateTooltipFromParticipant">
+ <parameter name="aNick"/>
+ <parameter name="aConv"/>
+ <body>
+ <![CDATA[
+ this.reset();
+ this.setAttribute("displayname", aNick);
+ let account = aConv.account;
+ this.setAttribute("iconPrpl",
+ account.protocol.iconBaseURI + "icon.png");
+ this.setAttribute("status", "unknown");
+ this.setMessage(Status.toLabel("unknown"));
+ this.setBuddyIcon(null);
+ this.addRow(this.bundle.GetStringFromName("buddy.account"),
+ account.name);
+ this.requestBuddyInfo(account,
+ aConv.target.getNormalizedChatBuddyName(aNick));
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <!-- nsIObserver implementation -->
+ <method name="observe">
+ <parameter name="aSubject"/>
+ <parameter name="aTopic"/>
+ <parameter name="aData"/>
+ <body>
+ <![CDATA[
+ if (aSubject == this.buddy &&
+ (aTopic == "account-buddy-status-changed" ||
+ aTopic == "account-buddy-status-detail-changed" ||
+ aTopic == "account-buddy-display-name-changed" ||
+ aTopic == "account-buddy-icon-changed"))
+ this.updateTooltipFromBuddy(this.buddy, this.elt);
+ else if (aTopic == "contact-preferred-buddy-changed" &&
+ aSubject.id == this.contact.id) {
+ let buddy = this.contact.preferredBuddy;
+ this.updateTooltipFromBuddy(buddy.preferredAccountBuddy, this.elt);
+ }
+ else if (aTopic == "user-info-received" &&
+ aData == this.observedUserInfo) {
+ this.appendTooltipInfo(aSubject.QueryInterface(Ci.nsISimpleEnumerator));
+ Services.obs.removeObserver(this, "user-info-received");
+ delete this.observedUserInfo;
+ }
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="popupshowing">
+ <![CDATA[
+ // No tooltip above the context menu.
+ if (document.popupNode)
+ return false;
+
+ let elt = document.tooltipNode;
+ // No tooltip for elements that have already been removed.
+ if (!elt.parentNode)
+ return false;
+
+ // Reset tooltip.
+ let largeTooltip = document.getElementById("largeTooltip");
+ largeTooltip.hidden = false;
+ this.removeAttribute("label");
+
+ let localName = elt.localName;
+ if (localName == "tab") {
+ if (!elt.linkedConversation || !elt.linkedConversation.conv)
+ return false;
+ return updateTooltipFromConversation(elt.linkedConversation.conv, elt);
+ }
+
+ if (localName == "conv")
+ return updateTooltipFromConversation(elt.conv, elt);
+
+ if (localName == "buddy")
+ return updateTooltipFromBuddy(elt.buddy.preferredAccountBuddy, elt);
+
+ if (localName == "contact")
+ return updateTooltipFromContact(elt.contact, elt);
+
+ if (localName == "listitem") {
+ let conv = document.getBindingParent(elt).conv;
+ return updateTooltipFromParticipant(elt.chatBuddy.name, conv);
+ }
+
+ let classList = elt.classList;
+ if (classList.contains("ib-nick") ||
+ classList.contains("ib-sender")) {
+ let conv = getBrowser()._conv;
+ if (conv.isChat)
+ return updateTooltipFromParticipant(elt.textContent, conv);
+ else if (elt.textContent == conv.name)
+ return updateTooltipFromConversation(conv, elt);
+ }
+
+ // Use the default content tooltip.
+ largeTooltip.hidden = true;
+ return fillInPageTooltip(elt);
+ ]]>
+ </handler>
+ <handler event="popuphiding">
+ <![CDATA[
+ this.buddy = null;
+ this.contact = null;
+ this.elt = null;
+ this.removeAttribute("noTopic");
+ this.removeAttribute("left");
+ if ("observedUserInfo" in this && this.observedUserInfo) {
+ Services.obs.removeObserver(this, "user-info-received");
+ delete this.observedUserInfo;
+ }
+
+ let buddies = document.getAnonymousElementByAttribute(this, "anonid",
+ "buddies");
+ let buddy;
+ while ((buddy = buddies.firstChild))
+ buddies.removeChild(buddy);
+
+ // Since Mozilla 22, tooltips don't seem to shrink automatically after
+ // being shown once at a large size. Not sure if it's temporary or not.
+ this.removeAttribute("width");
+ this.removeAttribute("height");
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/contact.xml
@@ -0,0 +1,644 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd" >
+ %instantbirdDTD;
+]>
+
+<bindings id="contactBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+ <binding id="contact" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:stack class="prplBuddyIcon" mousethrough="always">
+ <xul:image class="protoIcon" xbl:inherits="src=iconPrpl,status"/>
+ <xul:image class="statusIcon" xbl:inherits="status"/>
+ </xul:stack>
+ <xul:hbox flex="1" class="contact-hbox" mousethrough="always">
+ <xul:label crop="end" flex="1" mousethrough="always"
+ anonid="displayname" class="contactDisplayName blistDisplayName"
+ xbl:inherits="value=displayname,status"/>
+ <xul:label crop="end" flex="100000" mousethrough="always"
+ anonid="statusText" class="contactStatusText"
+ xbl:inherits="value=statusTextWithDash"/>
+ <xul:button anonid="startChatBubble" class="startChatBubble"
+ tooltiptext="&openConversationCmd.label;"/>
+ </xul:hbox>
+ </content>
+ <implementation implements="nsIObserver">
+
+ <destructor>
+ <![CDATA[
+ if (this.contact)
+ this.destroy();
+ ]]>
+ </destructor>
+
+ <method name="build">
+ <parameter name="aContact"/>
+ <parameter name="aGroup"/>
+ <body>
+ <![CDATA[
+ this.group = aGroup;
+ this.contact = aContact;
+ this.contact.addObserver(this);
+ this.addEventListener("transitionend", this._transitionEnd, true);
+
+ MutationObserver(function(aMutations) {
+ if (!this.getAttribute("selected"))
+ return;
+
+ // Ensure binding changes immediately to avoid the firing of a
+ // spurious accessibility focus event referring to the old binding
+ // that causes problems for screen readers (bugs BIO 1626, BMO 786508)
+ this.getBoundingClientRect();
+ }.bind(this)).observe(this, {attributes: true,
+ attributeFilter: ["selected"]});
+
+ // Don't do the animation if inside a closed group
+ this.state = this.hasAttribute("collapsed") ? "collapsed" : "showing";
+ ]]>
+ </body>
+ </method>
+
+ <property name="displayName"
+ onget="return this.contact.displayName;"/>
+
+ <property name="state"
+ onget="return this.getAttribute('state');">
+ <setter>
+ <![CDATA[
+ this.setAttribute('state', val);
+ if ("_transitionTimer" in this) {
+ clearTimeout(this._transitionTimer);
+ delete this._transitionTimer;
+ }
+
+ // If the new state will start a transition, add a timer to ensure
+ // it will actually be finished (see bug 675).
+ let delay;
+ if (val == "showing" || val == "collapsing")
+ delay = 200;
+ else if (val == "fading")
+ delay = 400 + 1000; // 400ms + 1000ms before starting
+ else
+ return val;
+
+ this._transitionTimer =
+ setTimeout(this._transitionEnd.bind(this), delay + 100);
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <property name="collapsed"
+ onget="return !!this.getAttribute('collapsed');">
+ <setter>
+ <![CDATA[
+ if (val) {
+ let state = this.state;
+ if (state == "fading" || state == "collapsing") {
+ if (state == "fading")
+ this.destroy();
+ this.parentNode.removeChild(this);
+ return;
+ }
+ this.setAttribute("collapsed", val);
+ this.state = "collapsed";
+ }
+ else {
+ this.removeAttribute("collapsed");
+ this.state = "visible";
+ this.update();
+ }
+ ]]>
+ </setter>
+ </property>
+
+ <property name="bundle">
+ <getter>
+ <![CDATA[
+ if (!this._bundle) {
+ this._bundle =
+ Services.strings.createBundle("chrome://instantbird/locale/instantbird.properties");
+ }
+ return this._bundle;
+ ]]>
+ </getter>
+ </property>
+
+ <!-- Textual representation of the contact and its status for accessibility
+ tools -->
+ <property name="label" readonly="true">
+ <getter>
+ <![CDATA[
+ let params = [this.contact.displayName, this.getAttribute("statusText")];
+ return this.bundle.formatStringFromName("contact.collapsed", params,
+ params.length);
+ ]]>
+ </getter>
+ </property>
+
+ <!-- nsIObserver implementation -->
+ <method name="observe">
+ <parameter name="aSubject"/>
+ <parameter name="aTopic"/>
+ <parameter name="aData"/>
+ <body>
+ <![CDATA[
+ if (!("contact" in this)) {
+ /* groups usually receive contact notifications after contacts.
+ However the 'Other Contacts' group uses the contact notifications
+ to fire group notifications, so if we are displayed inside the
+ 'Other Contacts' group, we may receive notifications here
+ even though we have already attempted to remove our observer.
+ Just ignore these notifications.
+ */
+ return;
+ }
+
+ if (aTopic == "contact-preferred-buddy-changed" ||
+ aTopic == "contact-display-name-changed" ||
+ aTopic == "contact-status-changed")
+ this.update();
+ else if (aTopic == "contact-signed-on") {
+ if (this.state == "fading") {
+ // If the contact is fading out because it's no longer in this group,
+ // ignore the signed-on notification; otherwise cancel the animation.
+ let groupId = this.group.tag.id;
+ if (this.contact.getTags().some(function(t) t.id == groupId))
+ this.state = "visible";
+ }
+ }
+ else if (aTopic == "contact-removed" ||
+ (aTopic == "contact-moved-out" && aSubject.id == this.group.tag.id) ||
+ (aTopic == "contact-signed-off" && !this.group.showOffline))
+ this.removeNode();
+ else if (aTopic == "buddy-moved-out-of-contact" && this.hasAttribute("open") &&
+ this.childNodes.length == 2) {
+ let buddyElt = document.createElement("buddy");
+ buddyElt.setAttribute("dummy", "true");
+ this.appendChild(buddyElt);
+ }
+ else if (aTopic == "buddy-moved-into-contact" && this.hasAttribute("open")) {
+ let buddyElt = document.createElement("buddy");
+ if (this.childNodes.length > 1 && this.childNodes[1].hasAttribute("dummy"))
+ this.removeChild(this.childNodes[1]);
+ this.appendChild(buddyElt);
+ buddyElt.build(aSubject, this);
+ }
+ else if (aTopic == "buddy-position-changed" && this.hasAttribute("open")) {
+ let id = aSubject.id;
+ for (let i = 0; i < this.childNodes.length; ++i) {
+ if (this.childNodes[i].buddy.id == id) {
+ this.childNodes[i].removeNode();
+ let newPosition = Number(aData);
+ if (newPosition > i)
+ ++newPosition;
+ let ref = null;
+ if (newPosition < this.childNodes.length)
+ ref = this.childNodes[newPosition];
+ let buddyElt = document.createElement("buddy");
+ this.insertBefore(buddyElt, ref);
+ buddyElt.build(aSubject, this);
+ break;
+ }
+ }
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="update">
+ <body>
+ <![CDATA[
+ this.setAttribute("displayname", this.contact.displayName);
+
+ let statusText = this.contact.statusText;
+ if (statusText)
+ statusText = " - " + statusText;
+ this.setAttribute("statusTextWithDash", statusText);
+ let statusType = this.contact.statusType;
+ this.setAttribute("statusText", Status.toLabel(statusType) + statusText);
+ this.setAttribute("status", Status.toAttribute(statusType));
+
+ if (this.contact.canSendMessage)
+ this.setAttribute("cansend", "true");
+ else
+ this.removeAttribute("cansend");
+
+ let proto = this.contact.preferredBuddy.protocol;
+ this.setAttribute("iconPrpl", proto.iconBaseURI + "icon.png");
+ ]]>
+ </body>
+ </method>
+
+ <method name="_transitionEnd">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ if ("_transitionTimer" in this) {
+ clearTimeout(this._transitionTimer);
+ delete this._transitionTimer;
+ }
+
+ let state = this.state;
+ if (state == "showing") {
+ this.update();
+ this.state = "visible";
+ }
+ else if (state == "fading") {
+ this.state = "collapsing";
+ this.destroy();
+ }
+ else if (state == "collapsing") {
+ // Ignore events of 'fading' transitions if the timer's already fired.
+ if (aEvent && ("propertyName" in aEvent) &&
+ aEvent.propertyName != "height")
+ return;
+ this.parentNode.removeChild(this);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="destroy">
+ <body>
+ <![CDATA[
+ this.contact.removeObserver(this);
+ this.group.removeContact(this);
+ delete this.contact;
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeNode">
+ <parameter name="aNoFading"/>
+ <body>
+ <![CDATA[
+ let state = this.state;
+ if (this.hasAttribute("collapsed") ||
+ window.getComputedStyle(this).height == "0px") {
+ // If the contact is not visible, remove it immediately (without animation)
+ this.destroy();
+ this.state = "collapsed"; // will remove pending animation timers.
+ this.parentNode.removeChild(this);
+ }
+ else if (state == "showing" || aNoFading) {
+ // We are still doing the expand animation, or we don't want
+ // the fading animation because we aren't actually removing the
+ // contact, but only reordering contacts within the group.
+ this.state = "collapsing";
+ this.destroy();
+ }
+ else if (state != "fading" && state != "collapsing")
+ this.state = "fading";
+ ]]>
+ </body>
+ </method>
+
+ <method name="startAliasing">
+ <body>
+ <![CDATA[
+ if (this.hasAttribute("aliasing"))
+ return; // prevent re-entry.
+
+ this.setAttribute("aliasing", "true");
+ let textbox =
+ document.getAnonymousElementByAttribute(this, "anonid", "displayname");
+ textbox.getBoundingClientRect(); // force binding attachment by forcing layout
+ textbox.select();
+
+ // Some keys (home/end for example) can make the selected item
+ // of the richlistbox change without producing a blur event on
+ // our textbox. Make sure we watch richlistbox selection changes.
+ this._parentSelectListener = (function(aEvent) {
+ if (aEvent.target == this.parentNode)
+ this.finishAliasing(true);
+ }).bind(this);
+ this.parentNode.addEventListener("select", this._parentSelectListener);
+ ]]>
+ </body>
+ </method>
+
+ <method name="finishAliasing">
+ <parameter name="aSave"/>
+ <body>
+ <![CDATA[
+ if (aSave) {
+ this.contact.alias =
+ document.getAnonymousElementByAttribute(this, "anonid", "displayname").value;
+ }
+ this.removeAttribute("aliasing");
+ this.parentNode.removeEventListener("select", this._parentSelectListener, false);
+ delete this._parentSelectListener;
+ this.parentNode.focus();
+ ]]>
+ </body>
+ </method>
+
+ <method name="remove">
+ <body>
+ <![CDATA[
+ this.contact.remove();
+ ]]>
+ </body>
+ </method>
+
+ <method name="canOpenConversation">
+ <body>
+ <![CDATA[
+ return this.contact.canSendMessage;
+ ]]>
+ </body>
+ </method>
+
+ <method name="openConversation">
+ <body>
+ <![CDATA[
+ if (!("Conversations" in window))
+ Components.utils.import("resource:///modules/imWindows.jsm");
+ Conversations.focusConversation(this.contact.createConversation());
+ ]]>
+ </body>
+ </method>
+
+ <method name="keyPress">
+ <parameter name="aEvent"/>
+ <body>this._keyPress(aEvent);</body>
+ </method>
+ <method name="_keyPress">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ switch (aEvent.keyCode) {
+ // If Enter or Return is pressed, open a new conversation
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ if (this.hasAttribute("aliasing"))
+ this.finishAliasing(true);
+ else if (this.canOpenConversation())
+ this.openConversation();
+ break;
+
+ case aEvent.DOM_VK_F2:
+ if (!this.hasAttribute("aliasing"))
+ this.startAliasing();
+ break;
+
+ case aEvent.DOM_VK_ESCAPE:
+ if (this.hasAttribute("aliasing"))
+ this.finishAliasing(false);
+ break;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="_DragOk">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ aEvent.preventDefault();
+ if (this.hasAttribute("droptarget"))
+ return;
+ if ("_droptarget" in window)
+ window._droptarget.removeAttribute("droptarget");
+ window._droptarget = this;
+ this.setAttribute("droptarget", "true");
+ ]]>
+ </body>
+ </method>
+ <method name="_DragLeave">
+ <body>
+ <![CDATA[
+ if (!this.hasAttribute("droptarget"))
+ return;
+ delete window._droptarget;
+ this.removeAttribute("droptarget");
+ ]]>
+ </body>
+ </method>
+ <method name="_checkDrag">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ if (this.state != "visible")
+ return;
+
+ let dt = aEvent.dataTransfer;
+ if (dt.types.contains("application/x-ib-contact")) {
+ if (dt.getData("application/x-ib-contact") != this.contact.id)
+ this._DragOk(aEvent);
+ else
+ aEvent.stopPropagation();
+ }
+ else if (dt.types.contains("application/x-ib-buddy"))
+ this._DragOk(aEvent);
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="blur">
+ <![CDATA[
+ if (!this.hasAttribute("aliasing"))
+ return;
+
+ let win =
+ Components.classes["@mozilla.org/focus-manager;1"]
+ .getService(Components.interfaces.nsIFocusManager)
+ .activeWindow;
+ if (win == document.defaultView)
+ finishAliasing(true);
+ ]]>
+ </handler>
+
+ <handler event="mousedown">
+ <![CDATA[
+ if (!this.hasAttribute("aliasing") && canOpenConversation() &&
+ event.originalTarget.getAttribute("anonid") == "startChatBubble")
+ openConversation();
+ ]]>
+ </handler>
+
+ <handler event="click">
+ <![CDATA[
+ if (!this.hasAttribute("aliasing") && canOpenConversation() &&
+ event.detail == 2 &&
+ event.originalTarget.getAttribute("anonid") != "expander")
+ openConversation();
+ ]]>
+ </handler>
+
+ <handler event="dragstart">
+ <![CDATA[
+ if (this.state != "visible")
+ return;
+
+ event.dataTransfer.setData("application/x-ib-contact",
+ this.contact.id);
+ event.stopPropagation();
+ ]]>
+ </handler>
+ <handler event="drop">
+ <![CDATA[
+ let dt = event.dataTransfer;
+ if (dt.types.contains("application/x-ib-contact")) {
+ let id = dt.getData("application/x-ib-contact");
+ this.contact.mergeContact(Services.contacts.getContactById(id));
+ }
+ else if (dt.types.contains("application/x-ib-buddy")) {
+ let id = dt.getData("application/x-ib-buddy");
+ let from = Services.contacts.getBuddyById(id);
+ if (from.contact.id != this.contact.id)
+ contact.adoptBuddy(from);
+ else
+ contact.moveBuddyBefore(from);
+ }
+ else
+ throw "Invalid drop on buddy!";
+ this._DragLeave();
+ ]]>
+ </handler>
+ <handler event="dragenter">
+ <![CDATA[
+ this._checkDrag(event);
+ ]]>
+ </handler>
+ <handler event="dragover">
+ <![CDATA[
+ this._checkDrag(event);
+ ]]>
+ </handler>
+ <handler event="dragleave">
+ <![CDATA[
+ this._DragLeave();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+
+ <binding id="contact-big" extends="chrome://instantbird/content/contact.xml#contact">
+ <content>
+ <xul:hbox flex="1" mousethrough="always">
+ <xul:stack class="prplBuddyIcon" mousethrough="always">
+ <xul:image class="protoIcon" xbl:inherits="src=iconPrpl,status"/>
+ <xul:image class="statusIcon" xbl:inherits="status"/>
+ </xul:stack>
+ <xul:vbox flex="1" class="contact-vbox" mousethrough="always">
+ <xul:hbox class="contact-hbox" mousethrough="always">
+ <xul:label crop="end" flex="1" mousethrough="always"
+ anonid="displayname" class="contactDisplayName blistDisplayName"
+ xbl:inherits="value=displayname,status"/>
+ <xul:button anonid="startChatBubble" class="startChatBubble"
+ tooltiptext="&openConversationCmd.label;"/>
+ </xul:hbox>
+ <xul:hbox class="contact-hbox" mousethrough="always">
+ <xul:label crop="end" flex="1" mousethrough="always"
+ anonid="statusText" class="contactStatusText"
+ xbl:inherits="value=statusText"/>
+ <xul:button anonid="expander" class="expander-down"
+ tooltiptextexpand="&expandContactTooltip;"
+ tooltiptextcollapse="&collapseContactTooltip;"
+ tooltiptext="&expandContactTooltip;"/>
+ </xul:hbox>
+ </xul:vbox>
+ </xul:hbox>
+ <xul:vbox anonid="contactBuddies" class="contactBuddies">
+ <children/>
+ </xul:vbox>
+ </content>
+ <implementation>
+ <!-- Textual representation of the contact and its status (and grouped
+ buddies if applicable) for accessibility tools -->
+ <property name="label" readonly="true">
+ <getter>
+ <![CDATA[
+ let propertyName = "contact.collapsed";
+ let params = [this.contact.displayName, this.getAttribute("statusText")];
+ let buddies = this.contact.getBuddies().map(function(b) b.displayName);
+
+ // Add the list of buddies only if there's more than one to avoid un-
+ // necessary duplication of the same name.
+ if (buddies.length > 1) {
+ propertyName = "contact.expanded";
+ params.push(buddies.join(this.bundle.GetStringFromName("contact.buddySeparator")));
+ }
+ return this.bundle.formatStringFromName(propertyName, params, params.length);
+ ]]>
+ </getter>
+ </property>
+
+ <method name="open">
+ <body>
+ <![CDATA[
+ let className, tooltip;
+ if (!this.hasAttribute("open")) {
+ let buddies = this.contact.getBuddies();
+ for each (let buddy in buddies) {
+ let buddyElt = document.createElement("buddy");
+ this.appendChild(buddyElt);
+ buddyElt.build(buddy, this);
+ }
+ if (buddies.length == 1) {
+ let buddyElt = document.createElement("buddy");
+ buddyElt.setAttribute("dummy", "true");
+ this.appendChild(buddyElt);
+ }
+ this.setAttribute("open", "true");
+ [className, tooltip] = ["expander-up", "tooltiptextcollapse"];
+ }
+ else {
+ for (let i = this.childNodes.length - 1; i >= 0; --i)
+ this.childNodes[i].removeNode();
+ this.removeAttribute("open");
+ [className, tooltip] = ["expander-down", "tooltiptextexpand"];
+ }
+
+ let expander = document.getAnonymousElementByAttribute(this, "anonid",
+ "expander");
+ expander.setAttribute("class", className);
+ expander.setAttribute("tooltiptext", expander.getAttribute(tooltip));
+ ]]>
+ </body>
+ </method>
+
+ <method name="keyPress">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ if (!this.hasAttribute("aliasing")) {
+ switch (aEvent.keyCode) {
+ case aEvent.DOM_VK_LEFT:
+ if (this.hasAttribute("open"))
+ this.open();
+ break;
+
+ case aEvent.DOM_VK_RIGHT:
+ if (!this.hasAttribute("open"))
+ this.open();
+ break;
+ }
+ }
+ this._keyPress(aEvent); // inherited actions.
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="click">
+ <![CDATA[
+ if (event.originalTarget.getAttribute("anonid") == "expander")
+ this.open();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/conv.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd" >
+ %instantbirdDTD;
+]>
+
+<bindings id="convBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+ <binding id="conv" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:stack class="prplBuddyIcon" mousethrough="always">
+ <xul:image class="protoIcon" xbl:inherits="src=iconPrpl,status"/>
+ <xul:image class="statusIcon" xbl:inherits="status"/>
+ </xul:stack>
+ <xul:hbox flex="1" class="conv-hbox" mousethrough="always">
+ <xul:label crop="end" flex="1" mousethrough="always"
+ anonid="displayname" class="convDisplayName blistDisplayName"
+ xbl:inherits="value=displayname,status"/>
+ <xul:label crop="end" flex="1000000" mousethrough="always"
+ anonid="statusText" class="convStatusText"
+ xbl:inherits="value=statusTextWithDash"/>
+ <xul:label anonid="unreadTargetedCount" class="convUnreadTargetedCount"
+ crop="end" mousethrough="never"
+ xbl:inherits="value=unreadTargetedCount"/>
+ <xul:label anonid="unreadCount" class="convUnreadCount"
+ crop="end" mousethrough="never"
+ xbl:inherits="value=unreadCount"/>
+ </xul:hbox>
+ </content>
+ <implementation implements="nsIObserver">
+
+ <destructor>
+ <![CDATA[
+ if (this.conv) {
+ this.conv.removeObserver(this);
+ delete this.conv;
+ }
+ ]]>
+ </destructor>
+
+ <method name="build">
+ <parameter name="aConv"/>
+ <body>
+ <![CDATA[
+ this.conv = aConv;
+ this.parentNode.listedConvs[this.conv.id] = this;
+ this.conv.addObserver(this);
+ this.update();
+ ]]>
+ </body>
+ </method>
+
+ <property name="displayName"
+ onget="return this.conv.title;"/>
+
+ <!-- nsIObserver implementation -->
+ <method name="observe">
+ <parameter name="aSubject"/>
+ <parameter name="aTopic"/>
+ <parameter name="aData"/>
+ <body>
+ <![CDATA[
+ if (aTopic == "target-prpl-conversation-changed" ||
+ aTopic == "unread-message-count-changed" ||
+ aTopic == "update-conv-title" ||
+ aTopic == "update-buddy-status" ||
+ aTopic == "update-buddy-status" ||
+ aTopic == "update-conv-chatleft" ||
+ aTopic == "chat-update-topic")
+ this.update();
+ else if (aTopic == "ui-conversation-closed")
+ this.removeNode();
+ ]]>
+ </body>
+ </method>
+
+ <method name="update">
+ <body>
+ <![CDATA[
+ this.setAttribute("displayname", this.displayName);
+ this.setAttribute("unreadCount", this.conv.unreadIncomingMessageCount);
+
+ let pings = 0;
+ let statusText = "";
+ if (this.conv.isChat) {
+ pings = this.conv.unreadTargetedMessageCount
+ if (!this.conv.account.connected || this.conv.left)
+ this.setAttribute("status", "left");
+ else {
+ this.removeAttribute("status");
+ statusText = this.conv.topic;
+ }
+ }
+ else {
+ let statusType = Ci.imIStatusInfo.STATUS_UNKNOWN;
+ let buddy = this.conv.buddy;
+ if (buddy && buddy.account.connected) {
+ statusText = buddy.statusText;
+ statusType = buddy.statusType;
+ }
+ this.setAttribute("status", Status.toAttribute(statusType));
+ }
+
+ this.setAttribute("unreadTargetedCount", pings);
+ if (statusText)
+ this.setAttribute("statusTextWithDash", " - " + statusText);
+ else
+ this.removeAttribute("statusTextWithDash");
+
+ this.setAttribute("iconPrpl",
+ this.conv.account.protocol.iconBaseURI + "icon.png");
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeNode">
+ <body>
+ <![CDATA[
+ this.conv.removeObserver(this);
+ delete this.parentNode.listedConvs[this.conv.id];
+ this.parentNode.removeChild(this);
+ delete this.conv;
+ ]]>
+ </body>
+ </method>
+
+ <method name="openConversation">
+ <body>
+ <![CDATA[
+ if (!("Conversations" in window))
+ Components.utils.import("resource:///modules/imWindows.jsm");
+ Conversations.focusConversation(this.conv.target);
+ ]]>
+ </body>
+ </method>
+
+ <method name="closeConversation">
+ <body>
+ <![CDATA[
+ if (!("Conversations" in window))
+ Components.utils.import("resource:///modules/imWindows.jsm");
+ Conversations.forgetHiddenConversation(this.conv);
+ this.conv.close();
+ ]]>
+ </body>
+ </method>
+
+ <method name="keyPress">
+ <parameter name="aEvent"/>
+ <body>this._keyPress(aEvent);</body>
+ </method>
+ <method name="_keyPress">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ switch (aEvent.keyCode) {
+ // If Enter or Return is pressed, open a new conversation
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ this.openConversation();
+ break;
+ }
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="mousedown">
+ <![CDATA[
+ let anonid = event.originalTarget.getAttribute("anonid");
+ if (anonid == "unreadCount" || anonid == "unreadTargetedCount") {
+ openConversation();
+ event.preventDefault();
+ }
+ ]]>
+ </handler>
+
+ <handler event="click">
+ <![CDATA[
+ if (event.detail == 2)
+ openConversation();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/convZoom.js
@@ -0,0 +1,98 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// This code was mostly copied from mozilla:
+// mozilla-central/source/browser/base/content/browser-textZoom.js
+var FullZoom = {
+ prefName: "conversation.zoomLevel",
+
+ init: function FullZoom_init() {
+ window.addEventListener("DOMMouseScroll", FullZoom.handleMouseScrolled);
+ window.addEventListener("unload", FullZoom.destroy);
+ let conversations = document.getElementById("conversations");
+ if (conversations) {
+ conversations.tabContainer
+ .addEventListener("select", FullZoom.applyPrefValue);
+ }
+
+ Services.prefs.addObserver(FullZoom.prefName, FullZoom, false);
+ FullZoom.applyPrefValue();
+ },
+
+ destroy: function FullZoom_destroy() {
+ Services.prefs.removeObserver(FullZoom.prefName, FullZoom);
+ window.removeEventListener("DOMMouseScroll", FullZoom.handleMouseScrolled, false);
+ },
+
+ // Events Handlers / Observe
+ handleMouseScrolled: function FullZoom_handleMouseScrolled(event) {
+ if (!event.ctrlKey || event.altKey || event.shiftKey || !event.detail)
+ return;
+
+ if (event.detail < 0 )
+ ZoomManager.enlarge();
+ else
+ ZoomManager.reduce();
+
+ FullZoom.saveCurrentZoomToPref();
+ },
+
+ // nsIObserver
+ observe: function (aSubject, aTopic, aData) {
+ if (aTopic != "nsPref:changed")
+ return;
+
+ switch(aData) {
+ case this.prefName:
+ this.applyPrefValue();
+ break;
+ }
+ },
+
+ enlarge: function FullZoom_zoomEnlarge() {
+ ZoomManager.enlarge();
+ this.saveCurrentZoomToPref();
+ },
+ reduce: function FullZoom_zoomReduce() {
+ ZoomManager.reduce();
+ this.saveCurrentZoomToPref();
+ },
+ reset: function FullZoom_ZoomReset() {
+ ZoomManager.reset();
+ try {
+ // Can throw an exception when the preference does not exist or is
+ // already at its default value.
+ Services.prefs.clearUserPref(this.prefName);
+ }
+ catch (ex) {}
+ },
+
+ // Settings and Prefs
+ saveCurrentZoomToPref: function FullZoom_saveCurrentZoomToPref() {
+ Services.prefs.setCharPref(this.prefName, ZoomManager.zoom);
+ },
+ /**
+ * Set the zoom level for the current browser.
+ *
+ * Per nsPresContext::setFullZoom, we can set the zoom to its current value
+ * without significant impact on performance, as the setting is only applied
+ * if it differs from the current setting. In fact getting the zoom and then
+ * checking ourselves if it differs costs more.
+ **/
+ applyPrefValue: function FullZoom_applyPrefValue() {
+ // If there's no browser (non-conversation tabs), don't do anything.
+ if (!getBrowser())
+ return;
+ let value = parseFloat(Services.prefs.getCharPref(FullZoom.prefName));
+ if (isNaN(value))
+ value = 1;
+ else if (value < ZoomManager.MIN)
+ value = ZoomManager.MIN;
+ else if (value > ZoomManager.MAX)
+ value = ZoomManager.MAX;
+ ZoomManager.zoom = value;
+ }
+};
+
+this.addEventListener("load", FullZoom.init);
new file mode 100644
--- /dev/null
+++ b/im/content/conversation.xml
@@ -0,0 +1,2252 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+<!DOCTYPE bindings [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+]>
+
+<bindings id="conversationBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="conversation">
+ <resources>
+ <stylesheet src="chrome://instantbird/skin/conversation.css"/>
+ </resources>
+ <content>
+ <xul:vbox class="convBox" flex="1">
+ <xul:toolbar class="conv-top-info" anonid="conv-top-info" context="tabContextMenu"/>
+ <xul:hbox class="conv-top" flex="1" anonid="conv-top">
+ <xul:notificationbox class="conv-messages" anonid="convNotificationBox" flex="1" xbl:inherits="chat">
+ <xul:vbox flex="1">
+ <xul:browser anonid="browser" type="content-conversation" flex="1"
+ xbl:inherits="tooltip=contenttooltip,contextmenu=contentcontextmenu,autoscrollpopup"/>
+ <xul:progressmeter anonid="browserProgress" hidden="true"/>
+ <xul:findbar anonid="FindToolbar" reversed="true"/>
+ </xul:vbox>
+ </xul:notificationbox>
+ <xul:splitter anonid="splitter" collapse="after" class="splitter conv-chat" xbl:inherits="chat">
+ <xul:grippy/>
+ </xul:splitter>
+ <xul:vbox class="conv-chat" width="150" xbl:inherits="chat">
+ <xul:hbox align="baseline" class="conv-nicklist-header">
+ <xul:label class="conv-nicklist-header-label"
+ anonid="participantLabel"
+ value="&chat.participants;"/>
+ <xul:textbox flex="1" readonly="true" class="plain" anonid="participantCount"/>
+ </xul:hbox>
+ <xul:listbox anonid="nicklist" class="conv-nicklist"
+ flex="1" seltype="multiple"
+ xbl:inherits="contextmenu=contentcontextmenu"
+ tooltip="buddyTooltip"
+ onclick="onNickClick(event);"
+ onkeypress="onNicklistKeyPress(event);"/>
+ </xul:vbox>
+ </xul:hbox>
+ <xul:splitter class="splitter" anonid="splitter-bottom"/>
+ <xul:vbox anonid="conv-bottom" class="conv-bottom">
+ <xul:textbox anonid="inputBox" class="conv-textbox" multiline="true" flex="1"
+ onclick = "delete document.getBindingParent(this)._completions;"/>
+ </xul:vbox>
+ </xul:vbox>
+ </content>
+
+ <implementation implements="nsIObserver">
+ <constructor>
+ <![CDATA[
+ let textbox = this.editor;
+ textbox.addEventListener("keypress", this.inputKeyPress.bind(this));
+ textbox.addEventListener("input", this.inputValueChanged.bind(this));
+ textbox.addEventListener("overflow", this.inputExpand.bind(this), true);
+ textbox.addEventListener("underflow", this._onTextboxUnderflow, true);
+
+ MutationObserver(function(aMutations) {
+ for (let mutation of aMutations) {
+ if (mutation.oldValue == "dragging") {
+ this._onSplitterChange();
+ break;
+ }
+ }
+ }.bind(this)).observe(this.getElt("splitter-bottom"),
+ {attributes: true, attributeOldValue: true,
+ attributeFilter: ["state"]});
+
+ MutationObserver(function(aMutations) {
+ for (let mutation of aMutations) {
+ if (mutation.oldValue == "collapsed") {
+ this._onNicklistSplitterChange();
+ break;
+ }
+ }
+ }.bind(this)).observe(this.getElt("splitter"),
+ {attributes: true, attributeOldValue: true,
+ attributeFilter: ["state"]});
+
+ var browser = this.browser;
+ browser.addEventListener("keypress", this.browserKeyPress);
+ browser.addEventListener("dblclick", this.browserDblClick.bind(this));
+ Services.obs.addObserver(this, "conversation-loaded", false);
+
+ // Avoid the browser property setter as the findbar constructor
+ // hasn't been executed yet. The setter will be called by the
+ // constructor in a setTimeout to setup the proper event listeners.
+ this.findbar._browser = browser;
+ ]]>
+ </constructor>
+
+ <destructor>
+ <![CDATA[
+ this.destroy();
+ ]]>
+ </destructor>
+
+ <!-- This is necessary because the destructor doesn't always get
+ called when we are removed from a tabbox. This needs to be
+ explicitly called before removing the DOM node. -->
+ <method name="destroy">
+ <body>
+ <![CDATA[
+ if ("buddies" in this) {
+ for each (let chatBuddy in this.buddies) {
+ if (chatBuddy.activeTimer)
+ clearTimeout(chatBuddy.activeTimer);
+ }
+ }
+ this._forgetConv();
+
+ if ("MessageFormat" in window) {
+ let textbox = this.editor;
+ MessageFormat.unregisterTextbox(textbox);
+ TextboxSpellChecker.unregisterTextbox(textbox);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="_forgetConv">
+ <parameter name="aShouldClose"/>
+ <body>
+ <![CDATA[
+ if (!this._conv)
+ return;
+ this._conv.removeObserver(this);
+ Conversations.unregisterConversation(this, aShouldClose);
+ delete this._conv;
+ this.browser.destroy();
+ this.findbar.destroy();
+ ]]>
+ </body>
+ </method>
+
+ <method name="close">
+ <body>
+ <![CDATA[
+ this._forgetConv(true);
+ ]]>
+ </body>
+ </method>
+
+ <method name="hide">
+ <body>
+ <![CDATA[
+ this._forgetConv(false);
+ ]]>
+ </body>
+ </method>
+
+ <method name="finishImport">
+ <parameter name="aConversation"/>
+ <body>
+ <![CDATA[
+ // Swap the docshells.
+ this.browser.swapDocShells(aConversation.browser);
+ // Ensure observers are removed.
+ aConversation.conv = null;
+ this.editor.value = aConversation.editor.value;
+ this.browser.browserResize();
+ this.updateTyping();
+ this.inputValueChanged();
+ this.loaded = true;
+ // Tell observers that this conversation was imported from another
+ // window as they might want to behave differently in this case.
+ Services.obs.notifyObservers(this.browser, "conversation-loaded",
+ "imported");
+ ]]>
+ </body>
+ </method>
+
+ <field name="loaded">false</field>
+
+ <field name="_readCount">0</field>
+ <method name="_showFirstMessages">
+ <body>
+ <![CDATA[
+ this.loaded = true;
+ let messages = this._conv.getMessages();
+ this._readCount = messages.length - this._conv.unreadMessageCount;
+ if (this._readCount)
+ this._writingContextMessages = true;
+ messages.forEach(this.addMsg.bind(this));
+ delete this._writingContextMessages;
+ ]]>
+ </body>
+ </method>
+
+ <field name="_statusText">""</field>
+ <field name="_statusTextEnd">""</field>
+ <field name="_statusTextEndIsError">false</field>
+
+ <method name="addMsg">
+ <parameter name="aMsg"/>
+ <body>
+ <![CDATA[
+ if (!this.loaded)
+ throw "Calling addMsg before the browser is ready?";
+
+ var conv = aMsg.conversation;
+ if (!conv) {
+ // The conversation has already been destroyed,
+ // probably because the window was closed.
+ // Return without doing anything.
+ return;
+ }
+
+ if (!aMsg.system && conv.isChat) {
+ let name = aMsg.who;
+ aMsg.color = this._hasBuddy(name) ?
+ this._activateBuddy(this.buddies[name], aMsg.time) :
+ this._getColorStyle(this._computeColor(name));
+ }
+
+ let read = this._readCount > 0;
+ let isUnreadMessage = !read && aMsg.incoming && !aMsg.system;
+ let isTabFocused = this.tab && this.tab.selected && document.hasFocus();
+ let shouldSetUnreadFlag = this.tab && isUnreadMessage && !isTabFocused;
+ let firstUnread = this.tab && !this.tab.hasAttribute("unread") &&
+ isUnreadMessage && this._isAfterFirstRealMessage &&
+ (!isTabFocused || this._writingContextMessages);
+
+ // Since the unread flag won't be set if the tab is focused,
+ // we need the following when showing the first messages to stop
+ // firstUnread being set for subsequent messages.
+ if (firstUnread)
+ delete this._writingContextMessages;
+
+ this.browser.appendMessage(aMsg, read, firstUnread);
+ if (!aMsg.system)
+ this._isAfterFirstRealMessage = true;
+
+ if (read) {
+ --this._readCount;
+ if (!this._readCount && !this._isAfterFirstRealMessage) {
+ // If all the context messages were system messages, we don't want
+ // an unread ruler after the context messages, so we forget that
+ // we had context messages.
+ delete this._writingContextMessages;
+ }
+ return;
+ }
+
+ if (isUnreadMessage && (!aMsg.conversation.isChat || aMsg.containsNick)) {
+ this._lastPing = aMsg.who;
+ this._lastPingTime = aMsg.time;
+ if (Services.prefs.getBoolPref("messenger.options.getAttentionOnNewMessages") &&
+ Interruptions.requestInterrupt("new-text", aMsg, "get-attention"))
+ window.getAttention();
+ }
+
+ if (isTabFocused)
+ this._conv.markAsRead();
+
+ if (shouldSetUnreadFlag) {
+ if (conv.isChat && aMsg.containsNick)
+ this.tab.setAttribute("attention", "true");
+ this.tab.setAttribute("unread", "true");
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="sendMsg">
+ <parameter name="aMsg"/>
+ <body>
+ <![CDATA[
+ if (!aMsg)
+ return;
+
+ let account = this._conv.account;
+
+ if (aMsg[0] == "/") {
+ // The /say command is used to bypass command processing
+ // (/say can be shortened to just /).
+ // "/say" or "/say " should be ignored, as should "/" and "/ ".
+ if (aMsg.match(/^\/(?:say)? ?$/)) {
+ this.resetInput();
+ return;
+ }
+ else if (aMsg.match(/^\/(?:say)? .*/))
+ aMsg = aMsg.slice(aMsg.indexOf(" ") + 1);
+ else if (Services.cmd.executeCommand(aMsg, this._conv.target)) {
+ this._conv.sendTyping("");
+ this.resetInput();
+ return;
+ }
+ else if (account.protocol.slashCommandsNative && account.connected) {
+ let cmd = aMsg.match(/^\/[^ ]+/);
+ if (cmd && cmd != "/me") {
+ this._conv.systemMessage(
+ this.bundle.formatStringFromName("unknownCommand", [cmd], 1),
+ true);
+ return;
+ }
+ }
+ }
+
+ if (!account.connected) {
+ let errMsg;
+ if (Services.io.offline)
+ errMsg = this.bundle.GetStringFromName("networkOffline");
+ else if (account.statusInfo.statusType ==
+ Components.interfaces.imIStatusInfo.STATUS_OFFLINE)
+ errMsg = this.bundle.GetStringFromName("statusOffline");
+ else {
+ errMsg = this.bundle.formatStringFromName("accountDisconnected",
+ [account.protocol.name, account.name], 2);
+ }
+ this._conv.systemMessage(errMsg, true);
+ return;
+ }
+
+ let msg = Components.classes["@mozilla.org/txttohtmlconv;1"]
+ .getService(Ci.mozITXTToHTMLConv)
+ .scanTXT(aMsg, 0);
+
+ if (account.HTMLEnabled) {
+ msg = msg.replace(/\n/g, "<br/>");
+ if (Services.prefs.getBoolPref("messenger.conversations.sendFormat")) {
+ let style = MessageFormat.getMessageStyle();
+ let proto = this._conv.account.protocol.id;
+ if (proto == "prpl-msn") {
+ if ("color" in style)
+ msg = "<font color=\"" + style.color + "\">" + msg + "</font>";
+ if ("fontFamily" in style)
+ msg = "<font face=\"" + style.fontFamily + "\">" + msg + "</font>";
+ // MSN doesn't support font size info in messages...
+ }
+ else if (proto == "prpl-aim" || proto == "prpl-icq" ||
+ proto == "prpl-yahoo" || proto == "prpl-yahoojp") {
+ let styleAttributes = ""
+ if ("color" in style)
+ styleAttributes += " color=\"" + style.color + "\"";
+ if ("fontFamily" in style)
+ styleAttributes += " face=\"" + style.fontFamily + "\"";
+ if ("fontSize" in style) {
+ let size = style.fontSize - style.defaultFontSize;
+ if (size < -4)
+ size = 1;
+ else if (size < 0)
+ size = 2;
+ else if (size < 3)
+ size = 3
+ else if (size < 7)
+ size = 4;
+ else if (size < 15)
+ size = 5;
+ else if (size < 25)
+ size = 6;
+ else
+ size = 7;
+ styleAttributes += " size=\"" + size + "\""
+ + " style=\"font-size: " + style.fontSize + "px;\"";
+ }
+ if (styleAttributes)
+ msg = "<font" + styleAttributes + ">" + msg + "</font>";
+ }
+ else {
+ let styleProperties = [];
+ if ("color" in style)
+ styleProperties.push("color: " + style.color);
+ if ("fontFamily" in style)
+ styleProperties.push("font-family: " + style.fontFamily);
+ if ("fontSize" in style)
+ styleProperties.push("font-size: " + style.fontSize + "px");
+ style = styleProperties.join("; ");
+ if (style)
+ msg = "<span style=\"" + style + "\">" + msg + "</span>";
+ }
+ }
+ this._conv.sendMsg(msg);
+ }
+ else
+ this._conv.sendMsg(account.HTMLEscapePlainText ? msg : aMsg);
+
+ // reset the textbox to its original size
+ this.resetInput();
+ ]]>
+ </body>
+ </method>
+
+ <method name="_onSplitterChange">
+ <body>
+ <![CDATA[
+ let textbox = this.editor;
+ // set the default height as the deck height (modified by the splitter)
+ textbox.defaultHeight = parseInt(textbox.parentNode.height) -
+ this._TEXTBOX_VERTICAL_OVERHEAD;
+
+ // When moved, the splitter takes the child frames (rather
+ // than DOM nodes) of the resized area, and for each, it sets the
+ // current (=after resize) frame height as the height attribute
+ // of the associated content (DOM) node.
+ // This height attribute is clearly undesirable here.
+ this.getElt("conv-top-info").removeAttribute("height");
+ ]]>
+ </body>
+ </method>
+
+ <method name="_onNicklistSplitterChange">
+ <body>
+ <![CDATA[
+ // Workaround for bug 1143: Listitems which are added while the
+ // nicklist is collapsed may not get bound when the nicklist is
+ // reopened, if they were assumed to be visible based on
+ // their position in the nicklist. They then remain missing from the
+ // nicklist, as the DOM believes they were already initialized.
+ // To ensure they get bound, we hide and then redisplay
+ // the listbox.
+ let pos = this.nicklistElt.getIndexOfFirstVisibleRow();
+ this.nicklistElt.style.display = "none";
+ // Force layout by reading a suitable property.
+ let dummy = this.nicklistElt.clientTop;
+ this.nicklistElt.style.display = "";
+ // Restore scroll position.
+ this.nicklistElt.scrollToIndex(pos);
+ ]]>
+ </body>
+ </method>
+
+ <!-- This value represents the difference between the deck's height and
+ the textbox's content height (borders, margins, paddings).
+ Differ according to the Operating System native theme. -->
+ <field name="_TEXTBOX_VERTICAL_OVERHEAD">0</field>
+ <!-- Ratio textbox height / conversation height.
+ 0.1 means that the textbox's height is 10% of the conversation's
+ height. -->
+ <field name="_TEXTBOX_RATIO" readonly="true">0.1</field>
+
+
+ <method name="calculateTextboxDefaultHeight">
+ <body>
+ <![CDATA[
+ let totalSpace = parseInt(window.getComputedStyle(this, null)
+ .getPropertyValue("height"));
+ let textbox = this.editor;
+ let textboxStyle = window.getComputedStyle(textbox, null);
+ let lineHeight = parseInt(textboxStyle.getPropertyValue("line-height"));
+
+ // Compute the overhead size.
+ let textboxHeight = textbox.inputField.clientHeight;
+ let deckHeight = textbox.parentNode.boxObject.height;
+ this._TEXTBOX_VERTICAL_OVERHEAD = deckHeight - textboxHeight;
+
+ // Calculate the number of lines to display.
+ let numberOfLines =
+ Math.round(totalSpace * this._TEXTBOX_RATIO / lineHeight);
+ if (numberOfLines <= 0)
+ numberOfLines = 1;
+
+ if (!this._maxEmptyLines) {
+ this._maxEmptyLines =
+ Services.prefs.getIntPref("messenger.conversations.textbox.defaultMaxLines");
+ }
+
+ if (numberOfLines > this._maxEmptyLines)
+ numberOfLines = this._maxEmptyLines;
+ textbox.defaultHeight = numberOfLines * lineHeight;
+
+ // set minimum height (in case the user moves the splitter)
+ textbox.parentNode.minHeight =
+ lineHeight + this._TEXTBOX_VERTICAL_OVERHEAD;
+ ]]>
+ </body>
+ </method>
+
+ <method name="initTextboxFormat">
+ <body>
+ <![CDATA[
+ let textbox = this.editor;
+
+ if (!("MessageFormat" in window))
+ Components.utils.import("resource:///modules/imTextboxUtils.jsm");
+ MessageFormat.registerTextbox(textbox);
+
+ // Init the textbox size
+ this.calculateTextboxDefaultHeight();
+ textbox.parentNode.height = textbox.defaultHeight +
+ this._TEXTBOX_VERTICAL_OVERHEAD;
+ textbox.inputField.style.overflowY = "hidden";
+
+ // Delay the initialization of the spellchecker until after
+ // the checkbox is initialized, otherwise the spellchecker is
+ // broken in conversations added to the window before it is
+ // visible (bug 295).
+ TextboxSpellChecker.registerTextbox(textbox);
+ ]]>
+ </body>
+ </method>
+
+ <method name="inputKeyPress">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ var inputBox = this.editor;
+ let text = inputBox.value;
+
+ const navKeyCodes = [KeyEvent.DOM_VK_PAGE_UP, KeyEvent.DOM_VK_PAGE_DOWN,
+ KeyEvent.DOM_VK_HOME, KeyEvent.DOM_VK_END,
+ KeyEvent.DOM_VK_UP, KeyEvent.DOM_VK_DOWN];
+
+ // Pass navigation keys to the browser if
+ // 1) the textbox is empty or 2) it's an IB-specific key combination
+ if ((!text && navKeyCodes.indexOf(event.keyCode) != -1) ||
+ ((event.shiftKey || event.altKey) && (event.keyCode == KeyEvent.DOM_VK_PAGE_UP ||
+ event.keyCode == KeyEvent.DOM_VK_PAGE_DOWN))) {
+ let newEvent = document.createEvent("KeyboardEvent");
+ newEvent.initKeyEvent("keypress", event.bubbles, event.cancelable, null,
+ event.ctrlKey, event.altKey, event.shiftKey, event.metaKey,
+ event.keyCode, event.charCode);
+ event.preventDefault();
+ event.stopPropagation();
+ // Keyboard events must be sent to the focused element for bubbling to work.
+ this.browser.focus();
+ this.browser.dispatchEvent(newEvent);
+ inputBox.focus();
+ return;
+ }
+
+ // When attempting to copy an empty selection, copy the
+ // browser selection instead (see bug 693).
+ // The 'C' won't be lowercase if caps lock is enabled.
+ if ((event.charCode == 99 /* 'c' */ ||
+ (event.charCode == 67 /* 'C' */ && !event.shiftKey)) &&
+ (navigator.platform.indexOf("Mac") >= 0 ? event.metaKey : event.ctrlKey) &&
+ inputBox.selectionStart == inputBox.selectionEnd) {
+ this.browser.doCommand();
+ return;
+ }
+
+ // Undo tab complete.
+ if (this._completions && event.keyCode == KeyEvent.DOM_VK_BACK_SPACE &&
+ !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
+ if (text == this._beforeTabComplete) {
+ // Nothing to undo, so let backspace act normally.
+ delete this._completions;
+ }
+ else {
+ event.preventDefault();
+
+ // First undo the comma separating multiple nicks or the suffix.
+ // More than one nick:
+ // "nick1, nick2: " -> "nick1: nick2"
+ // Single nick: remove the suffix
+ // "nick1: " -> "nick1"
+ let pos = inputBox.selectionStart;
+ const suffix = ": ";
+ if (pos > suffix.length &&
+ text.substring(pos - suffix.length, pos) == suffix) {
+ let completions = Object.keys(this.buddies);
+ // Check if the preceding words are a sequence of nick completions.
+ let preceding = text.substring(0, pos - suffix.length).split(", ");
+ if (preceding.every(function(n) completions.indexOf(n) != -1)) {
+ let s = preceding.pop();
+ if (preceding.length)
+ s = suffix + s;
+ inputBox.selectionStart -= s.length + suffix.length;
+ this.addString(s);
+ if (this._completions[0].slice(-suffix.length) == suffix) {
+ this._completions =
+ this._completions.map(function(c) c.slice(0, -suffix.length));
+ }
+ if (this._completions.length == 1 &&
+ inputBox.value == this._beforeTabComplete) {
+ // Nothing left to undo or to cycle through.
+ delete this._completions;
+ }
+ return;
+ }
+ }
+
+ // Full undo.
+ inputBox.selectionStart = 0;
+ this.addString(this._beforeTabComplete);
+ delete this._completions;
+ return;
+ }
+ }
+
+ // Tab complete.
+ // Keep the default behavior of the tab key if the input box
+ // is empty or a modifier is used.
+ if (event.keyCode == KeyEvent.DOM_VK_TAB && text.length != 0 &&
+ !event.altKey && !event.ctrlKey && !event.metaKey &&
+ (!event.shiftKey || this._completions)) {
+ event.preventDefault();
+
+ if (this._completions) {
+ // Tab has been pressed more than once.
+ if (this._completions.length == 1)
+ return;
+ if (this._shouldListCompletionsLater) {
+ this._conv.systemMessage(this._shouldListCompletionsLater);
+ delete this._shouldListCompletionsLater;
+ }
+
+ inputBox.selectionStart = this._completionsStart;
+ if (event.shiftKey) {
+ // Reverse cycle completions.
+ this._completionsIndex -= 2;
+ if (this._completionsIndex < 0)
+ this._completionsIndex += this._completions.length;
+ }
+ this.addString(this._completions[this._completionsIndex++]);
+ this._completionsIndex %= this._completions.length;
+ return;
+ }
+
+ let completions = [];
+ let firstWordSuffix = " ";
+ let secondNick = false;
+
+ // Second regex result will contain word without leading special characters.
+ this._beforeTabComplete = text.substring(0, inputBox.selectionStart);
+ let words = this._beforeTabComplete.match(/\S*?([\w-]+)?$/);
+ let word = words[0];
+ if (!word)
+ return;
+ let isFirstWord = inputBox.selectionStart == word.length;
+
+ // Check if we are completing a command.
+ let completingCommand = isFirstWord && word[0] == "/";
+ if (completingCommand) {
+ for each (let cmd in Services.cmd.listCommandsForConversation(this._conv)) {
+ // It's possible to have a global and a protocol specific command
+ // with the same name. Avoid duplicates in the |completions| array.
+ let name = "/" + cmd.name;
+ if (completions.indexOf(name) == -1)
+ completions.push(name);
+ }
+ }
+ else {
+ // If it's not a command, the only thing we can complete is a nick.
+ if (!this._conv.isChat)
+ return;
+
+ firstWordSuffix = ": ";
+
+ completions = Object.keys(this.buddies);
+
+ // Add recently parted nicks.
+ const kIncludeNickTimespan = 300000;
+ let cutoffTime = Date.now() - kIncludeNickTimespan;
+ let partedNicks = Object.keys(this.partedBuddies);
+ let j = partedNicks.length - 1;
+ while (j >= 0 &&
+ this.partedBuddies[partedNicks[j]].partTime > cutoffTime)
+ --j;
+ ++j; // Index of the first nick we want to keep.
+ if (partedNicks.length > j)
+ completions = completions.concat(partedNicks.slice(j));
+
+ let outgoingNick = this._conv.nick;
+ completions = completions.filter(function(c) c != outgoingNick);
+
+ // Check if the preceding words are a sequence of nick completions.
+ let wordStart = inputBox.selectionStart - word.length;
+ if (wordStart > 2) {
+ let separator = text.substring(wordStart - 2, wordStart);
+ if (separator == ": " || separator == ", ") {
+ let preceding = text.substring(0, wordStart - 2).split(", ");
+ if (preceding.every(function(n) completions.indexOf(n) != -1)) {
+ secondNick = true;
+ isFirstWord = true;
+ // Remove preceding completions from possible completions.
+ completions = completions.filter(function(c)
+ preceding.indexOf(c) == -1);
+ }
+ }
+ }
+ }
+
+ // Keep only the completions that share |word| as a prefix.
+ // Be case insensitive only if |word| is entirely lower case.
+ let condition;
+ if (word.toLocaleLowerCase() == word)
+ condition = function(c) c.toLocaleLowerCase().indexOf(word) == 0;
+ else
+ condition = function(c) c.indexOf(word) == 0;
+ let matchingCompletions = completions.filter(condition);
+ if (!matchingCompletions.length && words[1]) {
+ word = words[1];
+ firstWordSuffix = " ";
+ matchingCompletions = completions.filter(condition);
+ }
+ if (!matchingCompletions.length)
+ return;
+
+ // If the cursor is in the middle of a word, and the word is a nick,
+ // there is no need to complete - just jump to the end of the nick.
+ let wholeWord = text.substring(inputBox.selectionStart - word.length);
+ for each (let completion in matchingCompletions) {
+ if (wholeWord.lastIndexOf(completion, 0) == 0) {
+ let moveCursor = completion.length - word.length;
+ inputBox.selectionStart += moveCursor;
+ let separator = text.substring(inputBox.selectionStart,
+ inputBox.selectionStart + 2);
+ if (separator == ": " || separator == ", ")
+ inputBox.selectionStart += 2;
+ else if (!moveCursor) {
+ // If we're already at the end of a nick, carry on to display
+ // a list of possible alternatives and/or apply punctuation.
+ break;
+ }
+ return;
+ }
+ }
+
+ // We have possible completions!
+ this._completions = matchingCompletions.sort();
+ this._completionsIndex = 0;
+ // Save now the first and last completions in alphabetical order,
+ // as we will need them to find a common prefix. However they may
+ // not be the first and last completions in the list of completions
+ // actually exposed to the user, as if there are active nicks
+ // they will be moved to the beginning of the list.
+ let firstCompletion = this._completions[0];
+ let lastCompletion = this._completions.slice(-1)[0];
+
+ let preferredNick = false;
+ if (this._conv.isChat && !completingCommand) {
+ // If there are active nicks, prefer those.
+ let activeCompletions = this._completions.filter(function(c)
+ this._hasBuddy(c) &&
+ !this.buddies[c].hasAttribute("inactive"), this);
+ if (activeCompletions.length == 1)
+ preferredNick = true;
+ if (activeCompletions.length) {
+ // Move active nicks to the front of the queue.
+ activeCompletions.reverse();
+ activeCompletions.forEach(function(c) {
+ this._completions.splice(this._completions.indexOf(c), 1);
+ this._completions.unshift(c);
+ }, this);
+ }
+
+ // If one of the completions is the sender of the last ping,
+ // take it, if it was less than an hour ago.
+ if (this._lastPing && this._hasBuddy(this._lastPing) &&
+ this._completions.indexOf(this._lastPing) != -1 &&
+ (Date.now() / 1000 - this._lastPingTime) < 3600) {
+ preferredNick = true;
+ this._completionsIndex = this._completions.indexOf(this._lastPing);
+ }
+ }
+
+ // Display the possible completions in a system message.
+ delete this._shouldListCompletionsLater;
+ if (this._completions.length > 1) {
+ let completionsList = this._completions.join(" ");
+ if (preferredNick) {
+ // If we have a preferred nick (which is completed as a whole
+ // even if there are alternatives), only show the list of
+ // completions on the next <tab> press.
+ this._shouldListCompletionsLater = completionsList;
+ }
+ else
+ this._conv.systemMessage(completionsList);
+ }
+
+ let suffix = (isFirstWord ? firstWordSuffix : "");
+ this._completions = this._completions.map(function(c) c + suffix);
+
+ let completion;
+ if (this._completions.length == 1 || preferredNick) {
+ // Only one possible completion? Apply it! :-)
+ completion = this._completions[this._completionsIndex++];
+ this._completionsIndex %= this._completions.length;
+ }
+ else {
+ // We have several possible completions, attempt to find a common prefix.
+ let maxLength = Math.min(firstCompletion.length, lastCompletion.length);
+ let i = 0;
+ while (i < maxLength && firstCompletion[i] == lastCompletion[i])
+ ++i;
+
+ if (i)
+ completion = firstCompletion.substring(0, i);
+ else {
+ // Include this case so that secondNick is applied anyway,
+ // in case a completion is added by another tab press.
+ completion = word;
+ }
+ }
+
+ // Always replace what the user typed as its upper/lowercase may
+ // not be correct.
+ inputBox.selectionStart -= word.length;
+ this._completionsStart = inputBox.selectionStart;
+
+ if (secondNick) {
+ // Replace the trailing colon with a comma before the completed nick.
+ inputBox.selectionStart -= 2;
+ completion = ", " + completion;
+ }
+
+ this.addString(completion);
+ }
+ else if (this._completions)
+ delete this._completions;
+
+ if (event.keyCode != 13)
+ return;
+
+ if (!event.ctrlKey && !event.shiftKey && !event.altKey) {
+ // Prevent the default action before calling sendMsg to avoid having
+ // a line break inserted in the textbox if sendMsg throws.
+ event.preventDefault();
+ this.sendMsg(text);
+ }
+ else if (!event.shiftKey)
+ this.addString("\n");
+ ]]>
+ </body>
+ </method>
+
+ <field name="_pendingValueChangedCall">false</field>
+ <method name="inputValueChanged">
+ <body>
+ <![CDATA[
+ // Delaying typing notifications will avoid sending several updates in
+ // a row if the user is on a slow or overloaded machine that has
+ // trouble to handle keystrokes in a timely fashion.
+ // Make sure only one typing notification call can be pending.
+ if (this._pendingValueChangedCall)
+ return;
+
+ this._pendingValueChangedCall = true;
+ Services.tm.mainThread.dispatch(this.delayedInputValueChanged.bind(this),
+ Ci.nsIEventTarget.DISPATCH_NORMAL);
+ ]]>
+ </body>
+ </method>
+
+ <method name="delayedInputValueChanged">
+ <body>
+ <![CDATA[
+ this._pendingValueChangedCall = false;
+
+ // By the time this function is executed, the conversation may have
+ // been closed.
+ if (!this._conv)
+ return;
+
+ let text = this.editor.value;
+
+ // try to avoid sending typing notifications when the user is
+ // typing a command in the conversation.
+ // These checks are not perfect (especially if non-existing
+ // commands are sent as regular messages on the in-use prpl).
+ let left = Ci.prplIConversation.NO_TYPING_LIMIT;
+ if (!text.startsWith("/"))
+ left = this._conv.sendTyping(text);
+ else if (/^\/me /.test(text))
+ left = this._conv.sendTyping(text.slice(4));
+
+ // When the input box is cleared or there is no character limit,
+ // don't show the character limit in the statusbar.
+ if (left == Ci.prplIConversation.NO_TYPING_LIMIT || !text.length) {
+ this._statusTextEnd = "";
+ this._statusTextEndIsError = false;
+ }
+ else {
+ // 200 is a 'magic' constant to avoid showing big numbers.
+ this._statusTextEnd = left < 200 ? left.toString() : "";
+ this._statusTextEndIsError = left < 0;
+ }
+ this.displayStatusText();
+ ]]>
+ </body>
+ </method>
+
+ <method name="resetInput">
+ <body>
+ <![CDATA[
+ var inputBox = this.editor;
+ inputBox.value = "";
+ this._statusTextEnd = "";
+ this._statusTextEndIsError = false;
+ this.displayStatusText();
+
+ let overflow = "";
+ if (TextboxSize.autoResize) {
+ let currHeight = parseInt(inputBox.parentNode.height);
+ if (inputBox.defaultHeight + this._TEXTBOX_VERTICAL_OVERHEAD > currHeight)
+ inputBox.defaultHeight = currHeight - this._TEXTBOX_VERTICAL_OVERHEAD;
+ this.getElt("conv-bottom").height =
+ inputBox.defaultHeight + this._TEXTBOX_VERTICAL_OVERHEAD;
+ overflow = "hidden";
+ }
+
+ inputBox.inputField.style.overflowY = overflow;
+ ]]>
+ </body>
+ </method>
+
+ <method name="inputExpand">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ let textbox = this.editor;
+ let input = textbox.inputField;
+
+ // This feature has been disabled, or the user is currently dragging
+ // the splitter and the textbox has received an overflow event
+ if (!TextboxSize.autoResize ||
+ this.getElt("splitter-bottom").getAttribute("state") == "dragging") {
+ input.style.overflowY = "";
+ return;
+ }
+
+ // Check whether we can increase the height without hidding the status bar
+ // (ensure the min-height property on the top part of this dialog)
+ let topBox = this.getElt("conv-top");
+ let topBoxStyle = window.getComputedStyle(topBox, null);
+ let topMinSize = parseInt(topBoxStyle.getPropertyValue("min-height"));
+ let topSize = parseInt(topBoxStyle.getPropertyValue("height"));
+ let deck = textbox.parentNode;
+ let oldDeckHeight = parseInt(deck.height);
+ let newDeckHeight =
+ parseInt(input.scrollHeight) + this._TEXTBOX_VERTICAL_OVERHEAD;
+
+ if (!topMinSize || topSize - topMinSize > newDeckHeight - oldDeckHeight) {
+ // Hide a possible vertical scrollbar.
+ input.style.overflowY = "hidden";
+ deck.height = newDeckHeight;
+ }
+ else {
+ input.style.overflowY = "";
+ // Set it to the maximum possible value.
+ deck.height = oldDeckHeight + (topSize - topMinSize);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="onResize">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ let splitter = this.getElt("splitter-bottom");
+ let textbox = this.editor;
+
+ if (!splitter.hasAttribute("state")) {
+ this.calculateTextboxDefaultHeight();
+ textbox.parentNode.height = textbox.defaultHeight +
+ this._TEXTBOX_VERTICAL_OVERHEAD;
+ }
+ else {
+ // Used in case the browser is already on its min-height, resize the
+ // textbox to avoid hidding the status bar.
+ let convTop = this.getElt("conv-top");
+ let convTopStyle = window.getComputedStyle(convTop, null);
+ let convTopHeight = parseInt(convTopStyle.getPropertyValue("height"));
+ let convTopMinHeight =
+ parseInt(convTopStyle.getPropertyValue("min-height"));
+
+ if (convTopHeight == convTopMinHeight) {
+ textbox.parentNode.height = parseInt(textbox.parentNode.minHeight);
+ convTopHeight = parseInt(convTopStyle.getPropertyValue("height"));
+ textbox.parentNode.height = parseInt(textbox.parentNode.minHeight) +
+ (convTopHeight - convTopMinHeight);
+ }
+ }
+
+ if (TextboxSize.autoResize)
+ this.inputExpand();
+ ]]>
+ </body>
+ </method>
+
+ <method name="_onTextboxUnderflow">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ if (TextboxSize.autoResize)
+ this.inputField.style.overflowY = "hidden";
+ ]]>
+ </body>
+ </method>
+
+ <method name="browserKeyPress">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ let isMac = navigator.platform.indexOf("Mac") >= 0;
+ let accelKeyPressed = isMac? event.metaKey : event.ctrlKey;
+
+ // 118 is the decimal code for "v" character, 13 keyCode for "return" key
+ if (((accelKeyPressed && event.charCode != 118) || event.altKey) &&
+ event.keyCode != 13)
+ return;
+
+ if (event.charCode == 0 && // it's not a character, it's a command key
+ (event.keyCode != 13 && // Return
+ event.keyCode != 8 && // Backspace
+ event.keyCode != 46)) // Delete
+ return;
+
+ if (accelKeyPressed ||
+ !Services.prefs.getBoolPref("accessibility.typeaheadfind"))
+ document.getBindingParent(this).editor.focus();
+
+ // Returns for Ctrl+V
+ if (accelKeyPressed)
+ return;
+
+ const masks = Components.interfaces.nsIDOMNSEvent;
+ var modifiers = 0;
+ if (event.shiftKey)
+ modifiers |= masks.SHIFT_MASK;
+ if (event.ctrlKey)
+ modifiers |= masks.CONTROL_MASK;
+ if (event.altKey)
+ modifiers |= masks.ALT_MASK;
+ if (event.metaKey)
+ modifiers |= masks.META_MASK;
+ if (event.accelKey)
+ modifiers |= isMac ? masks.META_MASK : masks.CONTROL_MASK;
+
+ // resend the event
+ window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIDOMWindowUtils)
+ .sendKeyEvent(event.type, event.keyCode, event.charCode, modifiers);
+ ]]>
+ </body>
+ </method>
+
+ <method name="browserDblClick">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ if (!Services.prefs.getBoolPref("messenger.conversations.doubleClickToReply"))
+ return;
+
+ for (let node = event.target; node; node = node.parentNode) {
+ if (node._originalMsg) {
+ let msg = node._originalMsg;
+ let actions = msg.getActions();
+ if (actions.length >= 1) {
+ actions[0].run();
+ return;
+ }
+ if (msg.system || msg.outgoing || !msg.incoming || msg.error ||
+ !this._conv.isChat)
+ return;
+ // Add msg.who to leading list of nicks.
+ let text = this.editor.value;
+ if (text.indexOf(msg.who) != -1)
+ return;
+ let secondNick = false;
+ let pos = text.indexOf(":");
+ if (pos != -1) {
+ let completions = Object.keys(this.buddies);
+ // Check if the preceding words are a sequence of nicks.
+ let preceding = text.substring(0, pos).split(", ");
+ if (preceding.every(function(n) completions.indexOf(n) != -1))
+ secondNick = true;
+ }
+ this.addPrompt(msg.who + (secondNick ? ", " : ": "));
+ if (this._completions)
+ delete this._completions;
+ return;
+ }
+ }
+ ]]>
+ </body>
+ </method>
+
+ <!-- Replace the current selection in the editor by the given string -->
+ <method name="addString">
+ <parameter name="aString"/>
+ <body>
+ <![CDATA[
+ var editor = this.editor;
+ var length = (aString != "")
+ ? aString.length
+ : 0;
+
+ var cursorPosition = editor.selectionStart + length;
+
+ editor.value = editor.value.substr(0, editor.selectionStart) + aString +
+ editor.value.substr(editor.selectionEnd);
+ editor.selectionStart = editor.selectionEnd = cursorPosition;
+ this.inputValueChanged();
+ ]]>
+ </body>
+ </method>
+
+ <method name="addPrompt">
+ <parameter name="aPrompt"/>
+ <body>
+ <![CDATA[
+ let editor = this.editor;
+ let currentEditorValue = editor.value;
+ if (currentEditorValue.indexOf(aPrompt) != 0)
+ editor.value = aPrompt + currentEditorValue;
+ editor.focus();
+ this.inputValueChanged();
+ ]]>
+ </body>
+ </method>
+
+ <!-- Update the participant count of a chat conversation -->
+ <method name="updateParticipantCount">
+ <body>
+ <![CDATA[
+ this.getElt("participantCount").value = this._nicks.length;
+ ]]>
+ </body>
+ </method>
+
+ <!-- Set the attributes (flags) of a chat buddy -->
+ <method name="setBuddyAttributes">
+ <parameter name="aItem"/>
+ <body>
+ <![CDATA[
+ var buddy = aItem.chatBuddy;
+ var image;
+ if (!buddy.noFlags) {
+ if (buddy.founder)
+ image = "founder";
+ else if (buddy.op)
+ image = "operator";
+ else if (buddy.halfOp)
+ image = "half-operator";
+ else if (buddy.voiced)
+ image = "voice";
+ }
+ if (image)
+ aItem.setAttribute("image", "chrome://instantbird/skin/" + image + ".png");
+ else
+ aItem.removeAttribute("image");
+ ]]>
+ </body>
+ </method>
+
+ <!-- compute color for a nick -->
+ <method name="_computeColor">
+ <parameter name="aName"/>
+ <body>
+ <![CDATA[
+ // Compute the color based on the nick
+ var nick = aName.match(/[a-zA-Z0-9]+/);
+ nick = nick ? nick[0].toLowerCase() : nick = aName;
+ var weight = 10;
+ var res = 0;
+ for (var i = 0; i < nick.length; ++i) {
+ var char = nick.charCodeAt(i) - 47;
+ if (char > 10)
+ char -= 39;
+ // now char contains a value between 1 and 36
+ res += char * weight;
+ weight *= 0.52; //arbitrary
+ }
+ return Math.round(res) % 360;
+ ]]>
+ </body>
+ </method>
+
+ <!-- Returns the CSS color style for a nick color -->
+ <method name="_getColorStyle">
+ <parameter name="aColor"/>
+ <body>
+ <![CDATA[
+ return "color: hsl(" + aColor + ", 100%, 40%);";
+ ]]>
+ </body>
+ </method>
+
+ <!-- Set buddy color attributes -->
+ <method name="_setBuddyColor">
+ <parameter name="aBuddy"/>
+ <body>
+ <![CDATA[
+ let color = this._computeColor(aBuddy.chatBuddy.name);
+ aBuddy.color = color;
+ let style = this._getColorStyle(color);
+ aBuddy.colorStyle = style;
+ aBuddy.setAttribute("style", style);
+ ]]>
+ </body>
+ </method>
+
+ <!-- Test if aBuddyName is known in this.buddies without
+ risking a conflict with an hypothetical hasOwnProperty nick. -->
+ <method name="_hasBuddy">
+ <parameter name="aBuddyName"/>
+ <body>
+ <![CDATA[
+ return Object.prototype.hasOwnProperty.call(this.buddies, aBuddyName);
+ ]]>
+ </body>
+ </method>
+
+ <!-- Set nick to active if the last message is not older than
+ nickActiveTimespan. -->
+ <method name="_activateBuddy">
+ <parameter name="aBuddy"/>
+ <parameter name="aLastMsgTime"/>
+ <body>
+ <![CDATA[
+ if (!aBuddy.colorStyle)
+ this._setBuddyColor(aBuddy);
+ let nickActiveTimespan =
+ Services.prefs.getIntPref("messenger.conversations.nickActiveTimespan");
+ if (nickActiveTimespan > 0) {
+ let waitBeforeInactive =
+ (aLastMsgTime + nickActiveTimespan) * 1000 - Date.now();
+ // To avoid "blinking" nicks, don't bother setting to active
+ // if there's less than 5s left to go.
+ if (waitBeforeInactive < 5000)
+ return aBuddy.colorStyle;
+ // Set a timer so the nick will return to inactive again.
+ if (aBuddy.activeTimer)
+ clearTimeout(aBuddy.activeTimer);
+ aBuddy.activeTimer = setTimeout(function() {
+ delete aBuddy.activeTimer;
+ aBuddy.setAttribute("inactive", "true");
+ }, waitBeforeInactive);
+ }
+ aBuddy.lastMsgTime = aLastMsgTime;
+ aBuddy.removeAttribute("inactive");
+ return aBuddy.colorStyle;
+ ]]>
+ </body>
+ </method>
+
+ <!-- Add a buddy in the visible list of participants.
+ If aShouldAppendDirectly is true, the buddy will be added to the end
+ of the participant list, skipping the search for the correct
+ insert position to optimize performance. -->
+ <method name="addBuddy">
+ <parameter name="aBuddy"/>
+ <parameter name="aShouldAppendDirectly"/>
+ <body>
+ <![CDATA[
+ var name = aBuddy.name;
+ if (!name)
+ throw "The empty string isn't a valid nick.";
+ if (this._hasBuddy(name))
+ throw "Adding chat buddy " + name + " twice?!";
+
+ this.trackNick(name);
+
+ var item = document.createElement("listitem");
+ item.chatBuddy = aBuddy;
+ item.setAttribute("class", "listitem-iconic");
+ item.setAttribute("label", name);
+ this.setBuddyAttributes(item);
+
+ item.setAttribute("inactive", "true");
+ if (Object.prototype.hasOwnProperty.call(this.partedBuddies, name)) {
+ let parted = this.partedBuddies[name];
+ // If the buddy was absent for less than this timespan (in ms),
+ // it retains its active participant status on rejoining.
+ const kRestoreActiveTimespan = 300000;
+ if (parted.lastMsgTime &&
+ (Date.now() - parted.partTime) < kRestoreActiveTimespan)
+ this._activateBuddy(item, parted.lastMsgTime);
+ delete this.partedBuddies[name];
+ }
+
+ this.buddies[name] = item;
+ if (aShouldAppendDirectly) {
+ this.nicklistElt.appendChild(item);
+ this._nicks.push(name.toLowerCase());
+ return;
+ }
+ // Insert item at the right position
+ this.addNick(item);
+ ]]>
+ </body>
+ </method>
+
+ <!-- Array of lowercase nicks kept in the order in which they are
+ displayed in the participant list.
+ This array is for performance optimization only. To obtain the
+ capitalized list of nicks use Object.keys(this.buddies) -->
+ <field name="_nicks">[]</field>
+
+ <method name="addNick">
+ <parameter name="aListItem"/>
+ <body>
+ <![CDATA[
+ let nick = aListItem.chatBuddy.name.toLowerCase();
+
+ // Look for the place of the nick in the list
+ let itemCount = this._nicks.length;
+ let start = 0;
+ let end = itemCount;
+ while (start < end) {
+ let middle = start + Math.floor((end - start) / 2);
+ if (nick < this._nicks[middle])
+ end = middle;
+ else
+ start = middle + 1;
+ }
+
+ // Now insert the element
+ let nicklist = this.nicklistElt;
+ if (end == itemCount) {
+ nicklist.appendChild(aListItem);
+ this._nicks.push(nick);
+ }
+ else {
+ nicklist.insertBefore(aListItem, nicklist.getItemAtIndex(end));
+ this._nicks.splice(end, 0, nick);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <!-- Update a buddy in the visible list of participants -->
+ <method name="updateBuddy">
+ <parameter name="aBuddy"/>
+ <parameter name="aOldName"/>
+ <body>
+ <![CDATA[
+ var name = aBuddy.name;
+ if (!name)
+ throw "The empty string isn't a valid nick.";
+
+ if (!aOldName) {
+ // If aOldName is null, we are changing the flags of the buddy
+ var item = this.buddies[name];
+ item.chatBuddy = aBuddy;
+ this.setBuddyAttributes(item);
+ return;
+ }
+
+ // Is aOldName is not null, then we are renaming the buddy
+ if (!this._hasBuddy(aOldName))
+ throw "Updating a chat buddy that does not exist: " + aOldName;
+
+ if (this._hasBuddy(name))
+ throw "Updating a chat buddy to an already existing one: " + name;
+
+ this.trackNick(name);
+
+ var item = this.buddies[aOldName];
+ item.chatBuddy = aBuddy;
+ delete this.buddies[aOldName];
+ this.buddies[name] = item;
+ item.setAttribute("label", name);
+
+ // Move this item to the right position if its name changed
+ this._nicks.splice(this._nicks.indexOf(aOldName.toLowerCase()), 1);
+ this.nicklistElt.removeChild(item);
+ this.addNick(item);
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeBuddy">
+ <parameter name="aName"/>
+ <body>
+ <![CDATA[
+ if (!this._hasBuddy(aName))
+ throw "Cannot remove a buddy that was not in the room: " + aName;
+ var item = this.buddies[aName];
+ this.partedBuddies[aName] = {partTime: Date.now()};
+ if (item.activeTimer) {
+ clearTimeout(item.activeTimer);
+ this.partedBuddies[aName].lastMsgTime = item.lastMsgTime;
+ }
+ this._nicks.splice(this._nicks.indexOf(aName.toLowerCase()), 1);
+ this.nicklistElt.removeChild(item);
+ delete this.buddies[aName];
+ ]]>
+ </body>
+ </method>
+
+ <field name="_nickEscape">/[[\]{}()*+?.\\^$|]/g</field>
+ <method name="trackNick">
+ <parameter name="aNick"/>
+ <body>
+ <![CDATA[
+ if ("_showNickList" in this) {
+ this._showNickList[aNick.replace(this._nickEscape, "\\$&")] = true;
+ delete this._showNickRegExp;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="getShowNickModifier">
+ <body>
+ <![CDATA[
+ return (function (aNode) {
+ if (!("_showNickRegExp" in this)) {
+ if (!("_showNickList" in this)) {
+ this._showNickList = {};
+ Object.keys(this.buddies).forEach(function(n) {
+ this._showNickList[n.replace(this._nickEscape, "\\$&")] = true;
+ }, this);
+ }
+
+ // The reverse sort ensures that if we have "foo" and "foobar",
+ // "foobar" will be matched first by the regexp.
+ let nicks = Object.keys(this._showNickList).sort().reverse().join("|");
+ if (nicks) {
+ // We use \W to match for word-boundaries, as \b will not match the
+ // nick if it starts/ends with \W characters.
+ // XXX Ideally we would use unicode word boundaries:
+ // http://www.unicode.org/reports/tr29/#Word_Boundaries
+ this._showNickRegExp = new RegExp("\\W(?:" + nicks + ")\\W");
+ }
+ else {
+ // nobody, disable...
+ this._showNickRegExp = {exec: function() null};
+ return 0;
+ }
+ }
+ let exp = this._showNickRegExp;
+ let result = 0;
+ let match;
+ // Add leading/trailing spaces to match at beginning and end of
+ // the string as well. (If we used regex ^ and $, match.index would
+ // not be reliable.)
+ while ((match = exp.exec(" " + aNode.data + " "))) {
+ // \W is not zero-length, but this is cancelled by the
+ // extra leading space here.
+ let nickNode = aNode.splitText(match.index);
+ // subtract the 2 \W's to get the length of the nick.
+ aNode = nickNode.splitText(match[0].length - 2);
+ // at this point, nickNode is a text node with only the text
+ // of the nick and aNode is a text node with the text after
+ // the nick. The text in aNode hasn't been processed yet.
+ let nick = nickNode.data;
+ let elt = aNode.ownerDocument.createElement("span");
+ elt.setAttribute("class", "ib-nick");
+ if (this._hasBuddy(nick)) {
+ let buddy = this.buddies[nick];
+ if (!buddy.colorStyle)
+ this._setBuddyColor(buddy);
+ elt.setAttribute("style", buddy.colorStyle);
+ elt.setAttribute("nickColor", buddy.color);
+ }
+ else
+ elt.setAttribute("left", "true");
+ nickNode.parentNode.replaceChild(elt, nickNode);
+ elt.textContent = nick;
+ result += 2;
+ }
+ return result;
+ }).bind(this);
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateTopic">
+ <body>
+ <![CDATA[
+ let cti = this.getElt("conv-top-info");
+ let statusMessage = this.getElt("statusMessage");
+ if (this._conv.topicSettable) {
+ cti.setAttribute("topicEditable", "true");
+ cti.setAttribute("topicContext", "");
+ }
+ else {
+ cti.removeAttribute("topicEditable");
+ cti.setAttribute("topicContext", "tabContextMenu");
+ }
+
+ var topic = this._conv.topic;
+ if (topic) {
+ cti.setAttribute("statusTooltiptext", topic);
+ cti.removeAttribute("noTopic");
+ }
+ else {
+ cti.removeAttribute("statusTooltiptext");
+ cti.setAttribute("noTopic", "true");
+ topic = this.bundle.GetStringFromName("noTopic");
+ }
+ cti.setAttribute("statusMessage", topic);
+ cti.setAttribute("statusMessageWithDash", " - " + topic);
+ ]]>
+ </body>
+ </method>
+
+ <method name="onSelect">
+ <body>
+ <![CDATA[
+ this.displayStatusText();
+ if (!this.loaded)
+ return;
+
+ this.tab.removeAttribute("unread");
+ this.tab.removeAttribute("attention");
+ this._conv.markAsRead();
+ ]]>
+ </body>
+ </method>
+
+ <method name="switchingToPanel">
+ <body>
+ <![CDATA[
+ if (this._visibleTimer)
+ return;
+
+ // Start a timer to detect if the tab has been visible to the
+ // user for long enough to actually be seen (as opposed to the
+ // tab only being visible "accidentally in passing").
+ delete this._wasVisible;
+ this._visibleTimer = setTimeout(function() {
+ this._wasVisible = true;
+ delete this._visibleTimer;
+ }.bind(this), 1000);
+ ]]>
+ </body>
+ </method>
+
+ <method name="focus">
+ <body>
+ <![CDATA[
+ this.editor.focus();
+ ]]>
+ </body>
+ </method>
+
+ <method name="switchingAwayFromPanel">
+ <body>
+ <![CDATA[
+ if (this._visibleTimer) {
+ clearTimeout(this._visibleTimer);
+ delete this._visibleTimer;
+ }
+ // Remove the unread ruler if the tab has been visible without
+ // interruptions for sufficiently long.
+ if (this._wasVisible)
+ this.browser.removeUnreadRuler();
+ ]]>
+ </body>
+ </method>
+
+ <method name="getPanelSpecificMenuItems">
+ <body>
+ <![CDATA[
+ let items = [];
+ const XUL_NS =
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+
+ let bundle =
+ Services.strings.createBundle("chrome://instantbird/locale/conversation.properties");
+ let conv = this;
+ function createMenuItem(aId, aCommandHandler) {
+ let item = document.createElementNS(XUL_NS, "menuitem");
+ item.setAttribute("label", bundle.GetStringFromName(aId + ".label"));
+ item.setAttribute("accesskey", bundle.GetStringFromName(aId + ".accesskey"));
+ item.addEventListener("command", aCommandHandler);
+ return item;
+ }
+ let showLogsItem = createMenuItem("contextShowLogs", function() conv.showLogs());
+ showLogsItem.disabled = !this.hasLogs();
+ items.push(showLogsItem);
+
+ let hideConvItem = createMenuItem("contextHideConv", function() {
+ conv.hide();
+ document.getBindingParent(conv).removeTab(conv.tab);
+ });
+ items.push(hideConvItem);
+
+ let closeConvItem = createMenuItem("contextCloseConv", function() {
+ conv.close();
+ document.getBindingParent(conv).removeTab(conv.tab);
+ });
+ items.push(closeConvItem);
+
+ return items;
+ ]]>
+ </body>
+ </method>
+
+ <method name="hasLogs">
+ <body>
+ <![CDATA[
+ return Services.logs.getLogsForConversation(this.conv).hasMoreElements();
+ ]]>
+ </body>
+ </method>
+
+ <method name="showLogs">
+ <body>
+ <![CDATA[
+ let logs = Services.logs.getLogsForConversation(this.conv, true);
+ if (!logs.hasMoreElements())
+ return;
+ window.openDialog("chrome://instantbird/content/viewlog.xul",
+ "Logs", "chrome,resizable", {logs: logs},
+ this.conv.title);
+ ]]>
+ </body>
+ </method>
+
+ <method name="displayStatusText">
+ <body>
+ <![CDATA[
+ if (!this.tab.selected)
+ return;
+
+ if ("XULBrowserWindow" in window) {
+ window.XULBrowserWindow.setStatus(this._statusText);
+ if ("setStatusEnd" in window.XULBrowserWindow)
+ window.XULBrowserWindow.setStatusEnd(this._statusTextEnd,
+ this._statusTextEndIsError);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateTyping">
+ <body>
+ <![CDATA[
+ var typingState = this._conv.typingState;
+ if (typingState == this.typingState)
+ return;
+
+ this.tab.removeAttribute("typing");
+ this.tab.removeAttribute("typed");
+ this._statusText = "";
+
+ var name = this._conv.title.replace(/^([a-zA-Z0-9.]+)[@\s].*/, "$1");
+ if (typingState == Ci.prplIConvIM.TYPING) {
+ this.tab.setAttribute("typing", "true");
+ this._statusText = this.bundle.formatStringFromName("isTyping",
+ [name], 1);
+ }
+ else if (typingState == Ci.prplIConvIM.TYPED) {
+ this.tab.setAttribute("typed", "true");
+ this._statusText = this.bundle.formatStringFromName("hasStoppedTyping",
+ [name], 1);
+ }
+
+ this.typingState = typingState;
+ this.displayStatusText();
+ ]]>
+ </body>
+ </method>
+
+ <method name="getElt">
+ <parameter name="aAnonId"/>
+ <body>
+ <![CDATA[
+ return document.getAnonymousElementByAttribute(this, "anonid", aAnonId);
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateConvStatus">
+ <body>
+ <![CDATA[
+ let cti = this.getElt("conv-top-info");
+ cti.setAttribute("prplIcon", this._conv.account.protocol.iconBaseURI + "icon.png");
+
+ if (this._conv.isChat) {
+ if (!this._conv.account.connected || this._conv.left)
+ this.tab.setAttribute("status", "left");
+ else
+ this.tab.removeAttribute("status");
+ let account = this._conv.account;
+ let targetTooltip =
+ this.bundle.formatStringFromName("targetTooltipChat",
+ [this._conv.title, account.name,
+ account.protocol.name], 3);
+ cti.setAttribute("targetTooltiptext", targetTooltip);
+ }
+ else {
+ let displayName = this._conv.title;
+ let statusText = "";
+ let statusType = Ci.imIStatusInfo.STATUS_UNKNOWN;
+
+ let buddy = this._conv.buddy;
+ if (!buddy || !buddy.account.connected) {
+ this.tab.removeAttribute("status");
+
+ // This is ugly, but when an account gets disconnected libpurple
+ // doesn't reset the typing state... :(
+ this.tab.removeAttribute("typing");
+ this.tab.removeAttribute("typed");
+ this._statusText = "";
+ this.displayStatusText();
+ }
+ else {
+ displayName = buddy.displayName;
+ statusText = buddy.statusText;
+ statusType = buddy.statusType;
+ this.tab.setAttribute("status", Status.toAttribute(statusType));
+ cti.setAttribute("userIcon", buddy.buddyIconFilename);
+ }
+
+ let targetTooltip =
+ this.bundle.formatStringFromName("targetTooltipIM",
+ [this._conv.title,
+ this._conv.account.protocol.name], 2);
+ if (buddy && buddy.buddy.contact &&
+ buddy.buddy.contact.getBuddies().length > 1)
+ targetTooltip += this.bundle.GetStringFromName("targetChangeable");
+ cti.setAttribute("targetTooltiptext", targetTooltip);
+
+ cti.setAttribute("displayName", displayName);
+ if (statusText)
+ statusText = " - " + statusText;
+ cti.setAttribute("statusMessageWithDash", statusText);
+ let statusString = Status.toLabel(statusType);
+ cti.setAttribute("statusMessage", statusString + statusText);
+ cti.setAttribute("status", Status.toAttribute(statusType));
+ cti.setAttribute("statusTypeTooltiptext", statusString);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="initConversationUI">
+ <body>
+ <![CDATA[
+ if (this._conv.isChat) {
+ this.updateTopic();
+ this.setAttribute("chat", "true");
+ this.tab.setAttribute("chat", "true");
+ this.tab.setAttribute("prpl", this._conv.account.protocol.id);
+
+ let cti = this.getElt("conv-top-info");
+ cti.setAttribute("displayName", this._conv.title);
+ cti.setAttribute("status", "chat");
+
+ // Set an id on the participant count for accessibility reasons (see bug 216)
+ let id = "pc" + Date.now();
+ this.getElt("participantLabel").setAttribute("control", id);
+ this.getElt("participantCount").setAttribute("id", id);
+
+ // Populate the nicklist
+ this.buddies = {};
+ this.partedBuddies = {};
+ this._nicks = [];
+ this.nicklistElt = this.getElt("nicklist");
+ let enumerator = this.conv.getParticipants();
+ let chatBuddies = [];
+ while (enumerator.hasMoreElements()) {
+ let buddy = enumerator.getNext();
+ chatBuddies.push({name: buddy.name.toLowerCase(), buddy: buddy});
+ }
+ chatBuddies.sort(function(a, b) a.name < b.name ? -1 : 1)
+ .forEach(function(a) this.addBuddy(a.buddy, true), this);
+ this.updateParticipantCount();
+ if (Services.prefs.getBoolPref("messenger.conversations.showNicks"))
+ this.browser.addTextModifier(this.getShowNickModifier());
+ }
+ else if (this._conv.contact && this._conv.contact.getBuddies().length > 1)
+ this.getElt("conv-top-info").allowTargetChange();
+
+ if (this.tab) {
+ this.tab.setAttribute("label", this._conv.title);
+ this.tab.setAttribute("tooltip", "buddyTooltip");
+ }
+
+ if (!("Status" in window))
+ Components.utils.import("resource:///modules/imStatusUtils.jsm");
+ this.updateConvStatus();
+ this.initTextboxFormat();
+ ]]>
+ </body>
+ </method>
+
+ <!-- nsIObserver implementation -->
+ <method name="observe">
+ <parameter name="aSubject"/>
+ <parameter name="aTopic"/>
+ <parameter name="aData"/>
+ <body>
+ <![CDATA[
+ if (aTopic == "conversation-loaded") {
+ if (aSubject != this.browser)
+ return;
+
+ this.browser.progressBar = this.getElt("browserProgress");
+
+ if (!("Interruptions" in window))
+ Components.utils.import("resource:///modules/ibInterruptions.jsm");
+
+ // Display all queued messages. Use a timeout so that message text
+ // modifiers can be added with observers for this notification.
+ if (!this.loaded)
+ setTimeout(this._showFirstMessages.bind(this), 0);
+
+ Services.obs.removeObserver(this, "conversation-loaded");
+ return;
+ }
+
+ switch(aTopic) {
+ case "new-text":
+ if (this.loaded)
+ this.addMsg(aSubject);
+ break;
+
+ case "update-typing":
+ this.updateTyping();
+ break;
+
+ case "status-text-changed":
+ this._statusText = aData;
+ this.displayStatusText();
+ break;
+
+ case "replying-to-prompt":
+ this.addPrompt(aData);
+ break;
+
+ case "target-prpl-conversation-changed":
+ case "update-conv-title":
+ if (this.tab)
+ this.tab.setAttribute("label", this.conv.title);
+ // Update the status too.
+ case "update-buddy-status":
+ case "update-buddy-icon":
+ case "update-conv-chatleft":
+ this.updateConvStatus();
+ break;
+
+ case "chat-buddy-add":
+ aSubject.QueryInterface(Ci.nsISimpleEnumerator);
+ while (aSubject.hasMoreElements())
+ this.addBuddy(aSubject.getNext());
+ this.updateParticipantCount();
+ break;
+
+ case "chat-buddy-remove":
+ aSubject.QueryInterface(Ci.nsISimpleEnumerator);
+ while (aSubject.hasMoreElements()) {
+ let nick = aSubject.getNext();
+ nick.QueryInterface(Ci.nsISupportsString);
+ this.removeBuddy(nick.toString());
+ }
+ this.updateParticipantCount();
+ break;
+
+ case "chat-buddy-update":
+ this.updateBuddy(aSubject, aData);
+ break;
+ case "chat-update-topic":
+ this.updateTopic();
+ break;
+
+ case "ui-conversation-closed":
+ case "ui-conversation-destroyed":
+ this._forgetConv();
+ break;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="onNicklistKeyPress">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ if (event.keyCode != event.DOM_VK_RETURN &&
+ event.keyCode != event.DOM_VK_ENTER)
+ return;
+
+ let listbox = event.originalTarget;
+ if (listbox.selectedCount == 0)
+ return;
+
+ let newConv;
+ for (let i = 0; i < listbox.selectedCount; ++i) {
+ let nick = listbox.getSelectedItem(i).chatBuddy.name;
+ let name = this._conv.target.getNormalizedChatBuddyName(nick);
+ newConv = this._conv.account.createConversation(name);
+ }
+ // Only focus last of the opened conversations.
+ Conversations.focusConversation(newConv);
+ ]]>
+ </body>
+ </method>
+
+ <method name="onNickClick">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ // Open a private conversation in new tab on a middle or double click.
+ if (event.button == 1 || (event.button == 0 && event.detail == 2)) {
+ var nick = event.originalTarget.chatBuddy.name;
+ let name = this._conv.target.getNormalizedChatBuddyName(nick);
+ let newConv = this._conv.account.createConversation(name);
+ Conversations.focusConversation(newConv);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <property name="convId">
+ <getter>
+ <![CDATA[
+ return this._conv.id;
+ ]]>
+ </getter>
+ </property>
+
+ <property name="conv">
+ <getter>
+ <![CDATA[
+ return this._conv;
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ if (this._conv && val)
+ throw("Already initialized");
+ if (!val) {
+ // this conversation has probably been moved to another
+ // tab. Forget the prplConversation so that it isn't
+ // closed when destroying this binding.
+ this._forgetConv();
+ return val;
+ }
+ this._conv = val;
+ this._conv.addObserver(this);
+ Conversations.registerConversation(this);
+ this.browser.init(this._conv);
+ this.initConversationUI();
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <field name="_editor">null</field>
+ <property name="editor">
+ <getter>
+ <![CDATA[
+ if (!this._editor)
+ this._editor = this.getElt("inputBox");
+ return this._editor;
+ ]]>
+ </getter>
+ </property>
+
+ <property name="browser" onget="return this.getElt('browser');"/>
+ <property name="contentWindow" onget="return this.browser.contentWindow;"/>
+ <property name="findbar" onget="return this.getElt('FindToolbar');"/>
+
+ <property name="bundle">
+ <getter>
+ <![CDATA[
+ if (!this._bundle) {
+ this._bundle =
+ Services.strings
+ .createBundle("chrome://instantbird/locale/instantbird.properties");
+ }
+ return this._bundle;
+ ]]>
+ </getter>
+ </property>
+ </implementation>
+ </binding>
+
+ <binding id="conv-info-large"
+ extends="chrome://global/content/bindings/toolbar.xml#toolbar">
+ <content>
+ <xul:stack anonid="statusImageStack" class="statusImageStack">
+ <xul:image anonid="userIcon" class="userIcon" mousethrough="always"
+ xbl:inherits="src=userIcon"/>
+ <xul:image anonid="statusTypeIcon" class="statusTypeIcon"
+ xbl:inherits="status,tooltiptext=statusTypeTooltiptext"/>
+ </xul:stack>
+ <xul:stack class="displayNameAndstatusMessageStack"
+ mousethrough="always" flex="1">
+ <xul:hbox align="center" flex="1">
+ <xul:description anonid="displayName" class="displayName" flex="1"
+ crop="end" xbl:inherits="value=displayName"/>
+ <xul:toolbarbutton class="prplIcon alltargets-button"
+ anonid="targetPrplIcon" context=""
+ xbl:inherits="image=prplIcon,tooltiptext=targetTooltiptext">
+ <xul:menupopup class="all-targets-popup"
+ anonid="all-targets-popup"
+ position="after_end"/>
+ </xul:toolbarbutton>
+ </xul:hbox>
+ <xul:description anonid="statusMessage" class="statusMessage"
+ xbl:inherits="value=statusMessage,tooltiptext=statusTooltiptext,editable=topicEditable,editing,noTopic,context=topicContext,role=topicRole"
+ mousethrough="never" crop="end" flex="100000"/>
+ </xul:stack>
+ </content>
+
+ <implementation>
+ <constructor>
+ <![CDATA[
+ this.topic
+ .addEventListener("click", this.startEditTopic.bind(this));
+ if (this.hasAttribute("allowTargetChange"))
+ this.allowTargetChange();
+ // Cancel any ongoing edit if the binding changes.
+ this.editing = false;
+
+ if (navigator.platform.indexOf("Mac") >= 0) {
+ if ("draghandle" in this)
+ return;
+ if (!("WindowDraggingElement" in window))
+ Components.utils.import("resource://gre/modules/WindowDraggingUtils.jsm");
+ this.draghandle = new WindowDraggingElement(this, window);
+ }
+ ]]>
+ </constructor>
+
+ <property name="topic">
+ <getter>
+ <![CDATA[
+ return document.getAnonymousElementByAttribute(this, "anonid",
+ "statusMessage");
+ ]]>
+ </getter>
+ </property>
+
+ <property name="editing">
+ <getter>
+ <![CDATA[
+ return this.hasAttribute("editing");
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ if (val) {
+ this.setAttribute("editing", "true");
+ this.removeAttribute("topicRole");
+ }
+ else {
+ this.removeAttribute("editing");
+ if (this.topic.hasAttribute("editable")) {
+ // Sets role=button on the topic to denote it is clickable
+ // for accessibility.
+ this.setAttribute("topicRole", "button");
+ }
+ }
+ ]]>
+ </setter>
+ </property>
+
+ <method name="finishEditTopic">
+ <parameter name="aSave"/>
+ <body>
+ <![CDATA[
+ if (!this.editing)
+ return;
+
+ let elt = this.topic;
+ let convBinding = document.getBindingParent(this);
+ if (aSave) {
+ // apply the new topic only if it is different from the current one
+ if (elt.value != convBinding._conv.topic)
+ convBinding._conv.topic = elt.value;
+ }
+ this.editing = false;
+ elt.removeEventListener("keypress", this._topicKeyPress, true);
+ delete this._topicKeyPress;
+ elt.removeEventListener("blur", this._topicBlur, false);
+ delete this._topicBlur;
+ if (!elt.getAttribute("focused"))
+ return;
+ // Shift focus back to the input box. Ideally we would keep the focus
+ // on the topic here, but the conv-top is currently not accessible
+ // via the keyboard, so doing that would leave us stranded.
+ convBinding.editor.focus();
+ ]]>
+ </body>
+ </method>
+
+ <method name="topicKeyPress">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ switch (aEvent.keyCode) {
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ this.finishEditTopic(true);
+ break;
+
+ case aEvent.DOM_VK_ESCAPE:
+ this.finishEditTopic(false);
+ aEvent.stopPropagation();
+ aEvent.preventDefault();
+ break;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="topicBlur">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ if (aEvent.originalTarget == this.topic.inputField)
+ this.finishEditTopic(true);
+ ]]>
+ </body>
+ </method>
+
+ <method name="startEditTopic">
+ <body>
+ <![CDATA[
+ let elt = this.topic;
+ if (!elt.hasAttribute("editable") || this.editing)
+ return;
+
+ this.editing = true;
+ this._topicKeyPress = this.topicKeyPress.bind(this);
+ elt.addEventListener("keypress", this._topicKeyPress);
+ this._topicBlur = this.topicBlur.bind(this);
+ elt.addEventListener("blur", this._topicBlur);
+ // force binding attachment by forcing layout
+ elt.getBoundingClientRect();
+ if (this.hasAttribute("noTopic"))
+ elt.value = "";
+ elt.select();
+ ]]>
+ </body>
+ </method>
+
+ <method name="allowTargetChange">
+ <body>
+ <![CDATA[
+ let targetButton =
+ document.getAnonymousElementByAttribute(this, "anonid", "targetPrplIcon");
+ targetButton.setAttribute("type", "menu");
+ targetButton.setAttribute("mousethrough", "never");
+ this.setAttribute("allowTargetChange", "true");
+ let popup = document.getAnonymousElementByAttribute(this, "anonid",
+ "all-targets-popup");
+ popup.addEventListener("popupshowing", this.showAllTargets.bind(this));
+ popup.addEventListener("popuphiding", this.hideAllTargets.bind(this));
+ ]]>
+ </body>
+ </method>
+
+ <method name="showAllTargets">
+ <body>
+ <![CDATA[
+ let popup = document.getAnonymousElementByAttribute(this, "anonid",
+ "all-targets-popup");
+ let _conv = document.getBindingParent(this)._conv;
+ if (!_conv.contact)
+ return;
+ let currentBuddyId = _conv.target.buddy.buddy.id;
+ let buddies = _conv.contact.getBuddies();
+ for each (let buddy in buddies) {
+ let menuItem = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "menuitem");
+ menuItem.setAttribute("class", "menuitem-iconic alltargets-item");
+ menuItem.setAttribute("label", buddy.displayName);
+ menuItem.setAttribute("crop", "end");
+ menuItem.setAttribute("image", buddy.protocol.iconBaseURI + "icon.png");
+ if (buddy.id == currentBuddyId)
+ menuItem.setAttribute("selected", "true");
+ if (!buddy.canSendMessage)
+ menuItem.setAttribute("disabled", "true");
+ let statusText = buddy.statusText;
+ if (statusText)
+ menuItem.setAttribute("description", statusText);
+ menuItem.setAttribute("status", Status.toAttribute(buddy.statusType));
+ menuItem.buddy = buddy;
+ popup.appendChild(menuItem);
+ }
+ popup.addEventListener("command", this.changeTargetCommand);
+ ]]>
+ </body>
+ </method>
+
+ <method name="changeTargetCommand">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ let buddy = aEvent.originalTarget.buddy;
+ if (buddy.canSendMessage) {
+ let conv = buddy.createConversation();
+ Services.conversations.getUIConversation(conv).target = conv;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="hideAllTargets">
+ <body>
+ <![CDATA[
+ let popup = document.getAnonymousElementByAttribute(this, "anonid",
+ "all-targets-popup");
+ while (popup.hasChildNodes())
+ popup.removeChild(popup.lastChild);
+ popup.removeEventListener("command", this.changeTargetCommand);
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ </binding>
+
+ <binding id="conv-info-small"
+ extends="chrome://instantbird/content/conversation.xml#conv-info-large">
+ <content>
+ <xul:image anonid="statusTypeIcon" class="statusTypeIcon"
+ xbl:inherits="status,tooltiptext=statusTypeTooltiptext"/>
+ <xul:description anonid="displayName" class="displayName"
+ mousethrough="always" flex="1" crop="end"
+ xbl:inherits="value=displayName"/>
+ <xul:description anonid="statusMessage" class="statusMessage"
+ xbl:inherits="value=statusMessage,editable=topicEditable,editing,context=topicContext,role=topicRole"
+ crop="end" flex="100000"/>
+ <xul:description anonid="statusMessageWithDash"
+ class="statusMessageWithDash"
+ xbl:inherits="value=statusMessageWithDash,tooltiptext=statusTooltiptext,editable=topicEditable,editing,noTopic,context=topicContext,role=topicRole"
+ crop="end" flex="100000"/>
+ <xul:toolbarbutton class="prplIcon alltargets-button" mousethrough="always"
+ anonid="targetPrplIcon" context=""
+ xbl:inherits="image=prplIcon,tooltiptext=targetTooltiptext">
+ <xul:menupopup class="all-targets-popup"
+ anonid="all-targets-popup"
+ position="after_end"/>
+ </xul:toolbarbutton>
+ </content>
+ <implementation>
+ <constructor>
+ <![CDATA[
+ document.getAnonymousElementByAttribute(this, "anonid", "statusMessageWithDash")
+ .addEventListener("click", this.startEditTopic.bind(this));
+ ]]>
+ </constructor>
+ </implementation>
+ </binding>
+
+ <binding id="menuitem-target" extends="chrome://global/content/bindings/menu.xml#menuitem">
+ <content>
+ <xul:stack class="menu-iconic-left alltargets-item-icon-stack"
+ align="center" pack="center"
+ xbl:inherits="selected,disabled,checked">
+ <xul:image class="menu-iconic-icon alltargets-item-icon" xbl:inherits="src=image,validate,src"/>
+ <xul:image class="menu-iconic-icon status-overlay-icon" xbl:inherits="status"/>
+ </xul:stack>
+ <xul:label class="menu-iconic-text" xbl:inherits="value=label,accesskey,crop" crop="right" flex="1"/>
+ <xul:label class="menu-iconic-text menu-description" xbl:inherits="value=description" crop="right" flex="100000"/>
+ </content>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/credits.xhtml
@@ -0,0 +1,238 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
+ [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+ <!ENTITY % creditsDTD SYSTEM "chrome://instantbird/locale/credits.dtd">
+ %creditsDTD;
+ ]
+>
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>&credit.title;</title>
+
+ <style>
+ html {
+ background-color: white;
+ color: black;
+ }
+
+ * {
+ cursor: default;
+ -moz-user-select: none;
+ }
+
+ #titleBox {
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ right: 0px;
+ bottom: auto;
+ z-index: 999;
+ }
+
+ #footerBox {
+ position: fixed;
+ left: 0px;
+ top: auto;
+ right: 0px;
+ bottom: 0px;
+ z-index: 999;
+ }
+
+ #creditsBox {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ bottom:8px;
+ overflow: hidden;
+ z-index: 1;
+ width: 280px;
+ margin-left: 10px;
+ margin-right: 10px;
+ font-family: Arial, sans-serif;
+ font-size: small;
+ }
+
+ #creditsBox > .title > .motto {
+ margin-bottom: 180px;
+ }
+
+ h3 {
+ font-weight: bold;
+ font-size: small;
+ text-align: center;
+ margin: 15px 0px 5px 0px;
+ }
+
+ .creditsGroup {
+ margin-bottom: 1px;
+ text-align: center;
+ }
+
+ .footnote {
+ font-size: x-small;
+ text-align: justify;
+ padding-bottom: 40px;
+ }
+
+ h2.title {
+ margin-top: 200px;
+ margin-bottom: 100px;
+ text-align: center;
+ }
+
+ .motto {
+ margin-top: 2px;
+ font-style: italic;
+ font-size: small;
+ font-weight: normal;
+ padding-left: 2em;
+ }
+
+ #gecko {
+ margin-top: 90px;
+ margin-bottom: 90px;
+ font-size: medium;
+ }
+
+ a {
+ color: blue;
+ text-decoration: underline;
+ }
+
+ ul {
+ margin-top: 0px;
+ margin-left: 0px;
+ padding-left: 0px;
+ }
+
+ li {
+ list-style-type: none;
+ }
+
+ .center {
+ text-align: center;
+ }
+ </style>
+
+ <script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"></script>
+ <script type="application/x-javascript">
+ <![CDATA[
+
+ var gCreditsInterval = -1;
+
+ function uninit()
+ {
+ if (gCreditsInterval > -1)
+ clearInterval(gCreditsInterval);
+ }
+
+ function init()
+ {
+ var cb = document.getElementById("creditsBox");
+ cb.scrollTop = 0;
+ setTimeout(runCredits, 3000);
+ }
+
+ function runCredits()
+ {
+ gCreditsInterval = setInterval("creditsCallback()", 25);
+ }
+
+ function creditsCallback()
+ {
+ var cb = document.getElementById("creditsBox");
+ var newtop = cb.scrollTop + 1;
+ cb.scrollTop = newtop;
+ if (cb.scrollTop != newtop) {
+ // we're at the bottom
+ clearInterval(gCreditsInterval);
+ setTimeout(function() { cb.scrollTop = 0 }, 10000);
+ }
+ }
+
+ function openContributors(aEvent)
+ {
+ // Always prevent the default action even if loading throws, to
+ // avoid replacing the current document with an external page.
+ aEvent.preventDefault();
+
+ var ioService = Components.classes["@mozilla.org/network/io-service;1"].
+ getService(Components.interfaces.nsIIOService);
+ Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Components.interfaces.nsIExternalProtocolService)
+ .loadUrl(ioService.newURI(aEvent.target.href, null, null));
+ }
+
+ ]]>
+ </script>
+ </head>
+ <body onload="init();" onunload="uninit();">
+ <div id="titleBox">
+ <img src="chrome://branding/content/about-credits.png" />
+ </div>
+
+ <div id="creditsBox">
+ <h2 class="title">&brandFullName;
+ <div class="motto">&brandMotto;</div>
+ </h2>
+
+ <div class="creditsGroup">
+ <h3>&credit.lead;</h3>
+ <div class="credit">Florian Quèze</div>
+ </div>
+
+ <div class="creditsGroup">
+ <h3>&credit.contributors;</h3>
+ <div class="credit">Alexander Slovesnik</div>
+ <div class="credit">Alexandre Abraham</div>
+ <div class="credit">Benedikt Pfeifer</div>
+ <div class="credit">Daniel Scruton</div>
+ <div class="credit">Florian Janßen</div>
+ <div class="credit">Mark Yen</div>
+ <div class="credit">Matt d'Entremont</div>
+ <div class="credit">Nihanth Subramanya</div>
+ <div class="credit">Patrick Cloke</div>
+ <div class="credit">Quentin Castier</div>
+ <div class="credit">Quentin Headen</div>
+ <div class="credit">Quentin Raynaud</div>
+ <div class="credit">Romain Bezut</div>
+ <div class="credit">Varuna Jayasiri</div>
+ <div class="credit">Will Nayes</div>
+ </div>
+
+ <div class="creditsGroup">
+ <h3>&credit.thanks;</h3>
+ <div class="credit">
+ <ul>
+ <li>Mozilla developers</li>
+ <li>The Pidgin team</li>
+ <li>Cré'Innov</li>
+ </ul>
+ </div>
+
+ &credit.translation;
+
+ </div>
+
+ <p id="gecko" class="center">&credit.poweredByGecko;</p>
+
+ <p class="footnote">
+ &brandFullName; &license.part0; ©2007-2013 &license.part1;
+ <a href="http://www.instantbird.com/thanks.html" onclick="openContributors(event);">&license.contrib;</a>,
+ &license.part2;
+ <a onclick="openDialog('about:license');">&credit.license;</a>
+ &license.part3;</p>
+
+ </div>
+
+ <div id="footerBox">
+ <img src="chrome://branding/content/about-footer.png"/>
+ </div>
+ </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/im/content/debug/debug.js
@@ -0,0 +1,94 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const configWindow = "chrome://global/content/config.xul";
+
+var debug = {
+ aboutMemory: function debug_aboutMemory() {
+ openDialog("about:memory");
+ },
+
+ config: function debug_config() {
+ Core.showWindow("Preferences:ConfigManager", configWindow, "Config",
+ "chrome,resizable,centerscreen");
+ },
+
+ inspector: function debug_inspector() {
+ inspectDOMDocument(document);
+ },
+
+ garbageCollect: function debug_garbageCollect() {
+ window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIDOMWindowUtils)
+ .garbageCollect();
+ },
+
+ forceOnline: function debug_forceOnline() {
+ var ios = Services.io;
+ ios.manageOfflineStatus = false;
+ ios.offline = false;
+ },
+
+ load: function debug_load() {
+ setTimeout(function() {
+ // Load the Window DataSource so that browser windows opened subsequent to DOM
+ // Inspector show up in the DOM Inspector's window list.
+ var windowDS = Components.classes["@mozilla.org/rdf/datasource;1?name=window-mediator"]
+ .getService(Components.interfaces.nsIWindowDataSource);
+ }, 0);
+ }
+};
+
+window.addEventListener("load", debug.load);
+
+function debug_enumerateProtocols()
+{
+ dump("trying to enumerate protocols:\n");
+ for (let proto in getIter(Services.core.getProtocols())) {
+ dump(" " + proto.name + " " + proto.id + "\n");
+ for (let opt in getIter(proto.getOptions())) {
+ var type = { };
+ type[opt.typeBool] = ["bool", opt.getBool];
+ type[opt.typeInt] = ["int", opt.getInt];
+ type[opt.typeString] = ["string", opt.getString];
+ dump(" ("+ type[opt.type][0] + ") " +
+ opt.name + (opt.masked ? "(masked)" : "") + "\t" +
+ type[opt.type][1]() + "\n");
+ }
+ }
+}
+
+function debug_connectAccount(aProto, aName, aPassword)
+{
+ var proto = Services.core.getProtocolById(aProto);
+ if (!proto)
+ throw "Couldn't get protocol " + aProto;
+
+ var acc = Services.accounts.createAccount(aName, proto);
+ acc.password = aPassword;
+ dump("trying to connect to " + proto.name +
+ " (" + proto.id + ") with " + aName + "\n");
+ acc.connect();
+}
+
+function debug_dumpBuddyList()
+{
+ let formatBuddy = (function(buddy) " " + buddy.name + "\n " + buddy.getAccounts().map(function(a) a.name).join(" "));
+ let formatGroup = (function(aGroup) " Group " + aGroup.id + ": " + aGroup.name + "\n" + aGroup.getBuddies().map(formatBuddy).join("\n"));
+ dump("Buddy list:\n\n" + Services.tags.getTags().map(formatGroup).join("\n\n") + "\n\n");
+}
+
+function dumpStack(offset, max_depth)
+{
+ if (!offset || offset<0) offset = 0;
+ if (!max_depth) max_depth = 10;
+ var frame = Components.stack;
+ while(--max_depth && (frame=frame.caller)) {
+ if (!offset)
+ dump(frame+"\n");
+ else
+ --offset;
+ }
+ dump("\n");
+}
new file mode 100644
--- /dev/null
+++ b/im/content/debug/debug.xul
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<overlay id="debug"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://debug/content/debug.js"/>
+ <script type="application/javascript" src="chrome://inspector/content/hooks.js"/>
+
+ <commandset id="maincommandset">
+ <command id="aboutMemoryCommand" oncommand="debug.aboutMemory()"/>
+ <command id="domiCommand" oncommand="debug.inspector()"/>
+ <command id="configCommand" oncommand="debug.config()"/>
+ <command id="gcCommand" oncommand="debug.garbageCollect()"/>
+ <command id="forceOnlineCommand" oncommand="debug.forceOnline()"/>
+ </commandset>
+
+ <keyset id="mainkeyset">
+ <key id="aboutMemoryKey" key="M" command="aboutMemoryCommand" modifiers="accel,shift"/>
+ <key id="domiKey" key="I" command="domiCommand" modifiers="accel,shift"/>
+ <key id="configKey" key="," command="configCommand" modifiers="accel,shift"/>
+ <!-- shift + ',' is '?' on a French keyboard... -->
+ <key id="configKey2" key="?" command="configCommand" modifiers="accel"/>
+ <key id="gcKey" key="C" command="gcCommand" modifiers="accel,shift"/>
+ <key id="forceOnlineKey" key="O" command="forceOnlineCommand" modifiers="accel,shift"/>
+ </keyset>
+
+ <menubar id="blistMenubar">
+ <menu label="Debug" id="debugMenu" insertafter="toolsMenu">
+ <menupopup>
+ <menuitem id="domiMenuItem" label="DOM Inspector" key="domiKey" command="domiCommand"/>
+ <menuitem id="gcMenuItem" label="Force Garbage Collection" key="gcKey" command="gcCommand"/>
+ <menuitem id="forceOnlineMenuItem" label="Force Online" key="forceOnlineKey" command="forceOnlineCommand"/>
+ <menuitem id="aboutMemoryMenuItem" label="about:memory" key="aboutMemoryKey" command="aboutMemoryCommand"/>
+ <menuseparator/>
+ <menuitem id="configMenuItem" label="about:config" key="configKey" command="configCommand"/>
+ </menupopup>
+ </menu>
+ </menubar>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/debug/fake/fake.js
@@ -0,0 +1,389 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+Components.utils.import("resource:///modules/imXPCOMUtils.jsm");
+Components.utils.import("resource:///modules/jsProtoHelper.jsm");
+
+const away = Ci.imIStatusInfo.STATUS_AWAY;
+const idle = Ci.imIStatusInfo.STATUS_IDLE;
+const mobile = Ci.imIStatusInfo.STATUS_MOBILE;
+
+const flo_img_url = 'data:image/jpeg;base64,' +
+ '/9j/4AAQSkZJRgABAQAAAQABAAD//gA7Q1JFQVRPUjogZ2QtanBlZyB2MS4wICh1c2luZyBJSkcgSlBF' +
+ 'RyB2NjIpLCBxdWFsaXR5ID0gOTUK/9sAQwACAQEBAQECAQEBAgICAgIEAwICAgIFBAQDBAYFBgYGBQYG' +
+ 'BgcJCAYHCQcGBggLCAkKCgoKCgYICwwLCgwJCgoK/9sAQwECAgICAgIFAwMFCgcGBwoKCgoKCgoKCgoK' +
+ 'CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK/8AAEQgAMgAyAwEiAAIRAQMRAf/E' +
+ 'AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUS' +
+ 'ITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RV' +
+ 'VldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TF' +
+ 'xsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME' +
+ 'BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw' +
+ 'FWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKD' +
+ 'hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp' +
+ '6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/PL4p3OpWF5/Y+uuElnAYiEjGM5IrNl8ZaP8GvC1v4s8I6Qk' +
+ '2uajDILSZoyTbRAlMrj+NmXGcggZx1rJm0rxn4yvLnxNrUwMEbsFkUHtxX3X/wAEh/gH8O/GepeIvjB4' +
+ 'z+Hdprc/hiwsrPw1p10PMjjnl3yPdMjcbhjjtliR0FfN8OYaDrpSa5oq7ttfufP4WlGc0pLVdOlz889O' +
+ '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' +
+ 'dT//2Q==';
+
+const ib_icon_url = 'data:image/png;base64,' +
+ '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';
+
+var fake = {
+ load: function f_load() {
+ if (!Components.classes["@mozilla.org/process/environment;1"]
+ .getService(Components.interfaces.nsIEnvironment)
+ .get("FAKE"))
+ return;
+
+ dump("Fake load\n");
+ setTimeout(function() {
+ fake.fakeIt();
+ }, 1000);
+ },
+
+ fakeIt: function f_fakeIt() {
+ // First delete all existing accounts
+ // this will prompt the user for a confirmation before deleting
+ this.deleteAccounts();
+
+ // ensure the account manager is opened as our fake accounts will
+ // be visible only in already opened account manager windows
+ menus.accounts();
+
+ this.accounts = [new Account("Tom", "prpl-aim"),
+ new Account("tom.smith@hotmail.com", "prpl-msn"),
+ new Account("tom.smith@gmail.com/instantbird",
+ "prpl-jabber"),
+ new Account("tom.smith@yahoo.com", "prpl-yahoo"),
+ new Account("tom@irc.mozilla.org", "prpl-irc")];
+ for each (let account in this.accounts)
+ Services.obs.notifyObservers(account, "account-added", null);
+
+ var win = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator)
+ .getMostRecentWindow("Messenger:accountWizard");
+ if (win)
+ win.close();
+
+ this.groups = [
+ "Contacts",
+ "Friends",
+ "Colleagues"
+ ].map(function(name) Services.tags.createTag(name));
+
+ this.buddies = [
+ new AccountBuddy("Michael", this.accounts[2], this.groups[0], {_statusType: idle, _statusText: "I'm currently away from the computer."}),
+ new AccountBuddy("Ethan", this.accounts[2], this.groups[0]),
+ new AccountBuddy("Daniel", this.accounts[1], this.groups[0]),
+ new AccountBuddy("Emily", this.accounts[0], this.groups[1], {_statusType: away, _statusText: "out for lunch"}),
+ new AccountBuddy("Christopher", this.accounts[0], this.groups[1]),
+ new AccountBuddy("Anthony", this.accounts[0], this.groups[1], {_statusType: mobile}),
+ new AccountBuddy("Florian", this.accounts[2], this.groups[1], {_buddyIconFileName: flo_img_url}),
+ new AccountBuddy("Emma", this.accounts[1], this.groups[1]),
+ new AccountBuddy("Tony", this.accounts[1], this.groups[1], {_statusText: "Try Instantbird!"}),
+ new AccountBuddy("Andrew", this.accounts[3], this.groups[1]),
+ new AccountBuddy("Olivia", this.accounts[3], this.groups[1]),
+ new AccountBuddy("Elizabeth", this.accounts[1], this.groups[2]),
+ new AccountBuddy("William", this.accounts[2], this.groups[2])
+ ];
+ for each (let buddy in this.buddies)
+ Services.contacts.accountBuddyAdded(buddy);
+
+ this.convs = [
+ new Conversation("Florian", this.accounts[2], undefined, this.buddies[6]),
+ new Conversation("#instantbird", this.accounts[4], "Tom"),
+ new Conversation("William", this.accounts[2], undefined, this.buddies[13]),
+ new Conversation("Emma", this.accounts[2], undefined, this.buddies[7])
+ ];
+
+ let makeDate = function(aDateString) {
+ let array = aDateString.split(":");
+ let now = new Date();
+ // Use a date on day in the future so that time bubbles doesn't
+ // show the latest message as several hours old.
+ // FIXME: this will break when run the last day of the month.
+ return (new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1,
+ array[0], array[1], array[2])) / 1000;
+ };
+
+ let chat = this.convs[1];
+ chat._topic = "Ask questions about Instantbird here.";
+ chat._participants["Andrew"] = new ChatBuddy("Andrew");
+ chat._participants["Daniel"] = new ChatBuddy("Daniel");
+ chat._participants["Emma"] = new ChatBuddy("Emma");
+ chat._participants["Florian"] = new ChatBuddy("Florian", {op: true});
+ chat._participants["Tom"] = new ChatBuddy("Tom");
+ chat._participants["Tony"] = new ChatBuddy("Tony");
+
+ new Message("Florian", "Hey! :)",
+ {time: makeDate("10:42:22"), incoming: true, conversation: this.convs[0]});
+ new Message("Florian", "What's up?",
+ {time: makeDate("10:42:25"), incoming: true, conversation: this.convs[0]});
+ new Message("Tom", "I'm trying Instantbird! :D",
+ {time: makeDate("10:43:01"), outgoing: true, conversation: this.convs[0]});
+ new Message("system", "Flo has gone away.",
+ {time: makeDate("10:43:06"), system: true, conversation: this.convs[0]});
+ new Message("system", "Flo has become idle.",
+ {time: makeDate("10:48:10"), system: true, conversation: this.convs[0]});
+ new Message("system", "Flo is no longer idle.",
+ {time: makeDate("10:55:26"), system: true, conversation: this.convs[0]});
+ new Message("system", "Flo is no longer away.",
+ {time: makeDate("10:56:02"), system: true, conversation: this.convs[0]});
+ new Message("Florian", "So, what do you think?",
+ {time: makeDate("10:42:25"), incoming: true, conversation: this.convs[0]});
+ new Message("Tom", "Instantbird is great!",
+ {time: makeDate("10:43:52"), outgoing: true, conversation: this.convs[0]});
+ new Message("Tom", "I love it! <3",
+ {time: makeDate("10:44:01"), outgoing: true, conversation: this.convs[0]});
+ new Message("Florian", "Thanks :)",
+ {time: makeDate("10:44:12"), incoming: true, conversation: this.convs[0]});
+
+ new Message("William", "Hi!",
+ {time: makeDate("10:43:05"), incoming: true, conversation: this.convs[2]});
+
+ new Message("system", "The topic for " + chat.name + " is: " + chat.topic,
+ {time: makeDate("10:43:06"), system: true, conversation: chat});
+ new Message("Tom", "Hi! ^^",
+ {time: makeDate("10:43:32"), outgoing: true, conversation: chat});
+ new Message("Andrew", "Instantbird is great!",
+ {time: makeDate("10:43:52"), incoming: true, conversation: chat});
+ new Message("Daniel", "Sure! I love it! <3",
+ {time: makeDate("10:44:01"), incoming: true, conversation: chat});
+ new Message("Florian", "Thanks :)",
+ {time: makeDate("10:44:12"), incoming: true, conversation: chat});
+
+ Services.core.globalUserStatus.displayName = "Tom Smith";
+ // Ugly :-(
+ document.getElementById("userIcon").src = ib_icon_url;
+ },
+ deleteAccounts: function f_deleteAccounts() {
+ if (!Services.accounts.getAccounts().hasMoreElements())
+ return;
+
+ var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ if (!prompts.confirm(window, "Are you sure you want to delete all accounts?",
+ "You are about to delete " + nbaccounts + " accounts. Are you sure?"))
+ throw "user aborted the operation";
+
+ for (let acc in getIter(Services.accounts.getAccounts()))
+ Services.accounts.deleteAccount(acc.id);
+ }
+};
+
+this.addEventListener("load", fake.load);
+
+var gLastAccountId = 0;
+function Account(aName, aProto)
+{
+ this.name = aName;
+ this.protocol = Services.core.getProtocolById(aProto);
+ this.id = "account" + (++gLastAccountId);
+ this.numericId = gLastAccountId;
+
+ dump("account " + aName + " created\n");
+}
+Account.prototype = {
+ __proto__: ClassInfo("imIAccount", "generic account object"),
+ get imAccount() this,
+ protocol: null,
+ password: "",
+ autoLogin: true,
+ alias: "",
+ proxyInfo: null,
+ connectionStageMsg: "",
+ connectionErrorReason: -1,
+ timeOfNextReconnect: 0,
+ timeOfLastConnect: new Date(),
+ connectionErrorMessage: "",
+ disconnecting: false,
+ disconnected: false,
+ connected: true,
+ connecting: false
+
+ //FIXME: PurpleConnectionFlags
+};
+
+function AccountBuddy(aName, aAccount, aTag, aObject)
+{
+ this._init(aAccount, null, aTag, aName);
+ if (aObject)
+ for (let i in aObject)
+ this[i] = aObject[i];
+}
+AccountBuddy.prototype = {
+ __proto__: GenericAccountBuddyPrototype,
+ _statusType: Ci.imIStatusInfo.STATUS_AVAILABLE
+};
+
+function Conversation(aName, aAccount, aChatNick, aBuddy)
+{
+ this.__proto__ = aChatNick ? GenericConvChatPrototype : GenericConvIMPrototype;
+ this.buddy = aBuddy;
+ this._init(aAccount, aName, aChatNick);
+ dump("conversation " + aName + " created\n");
+}
+
+function ChatBuddy(aName, aObject)
+{
+ this._name = aName;
+ if (aObject)
+ for (let i in aObject)
+ this[i] = aObject[i];
+}
+ChatBuddy.prototype = GenericConvChatBuddyPrototype;
new file mode 100644
--- /dev/null
+++ b/im/content/debug/fake/fake.xul
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<overlay id="fake"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/x-javascript" src="chrome://fake/content/fake.js"/>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/debug/viewselectionsource.xul
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<overlay id="viewselectionsource"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <keyset id="conversationsKeys">
+ <key id="key_viewselectionsource" key="u" modifiers="accel"
+ oncommand="
+ var win = getBrowser().contentWindow;
+ var selection = win.getSelection();
+ if (!selection.isCollapsed)
+ window.openDialog('chrome://global/content/viewPartialSource.xul',
+ '_blank', 'scrollbars,resizable,chrome,dialog=no',
+ null, 'charset=' + win.document.characterSet,
+ selection, 'selection');
+ "/>
+ </keyset>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/engineManager.js
@@ -0,0 +1,528 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const Ci = Components.interfaces;
+const Cc = Components.classes;
+
+const ENGINE_FLAVOR = "text/x-moz-search-engine";
+
+var gEngineView = null;
+
+var gEngineManagerDialog = {
+ init: function engineManager_init() {
+ gEngineView = new EngineView(new EngineStore());
+
+ var tree = document.getElementById("engineList");
+ tree.view = gEngineView;
+
+ var os = Cc["@mozilla.org/observer-service;1"].
+ getService(Ci.nsIObserverService);
+ os.addObserver(this, "browser-search-engine-modified", false);
+ },
+
+ observe: function engineManager_observe(aEngine, aTopic, aVerb) {
+ if (aTopic == "browser-search-engine-modified") {
+ aEngine.QueryInterface(Ci.nsISearchEngine)
+ switch (aVerb) {
+ case "engine-added":
+ gEngineView._engineStore.addEngine(aEngine);
+ gEngineView.rowCountChanged(gEngineView.lastIndex, 1);
+ break;
+ case "engine-changed":
+ gEngineView._engineStore.reloadIcons();
+ break;
+ case "engine-removed":
+ case "engine-current":
+ // Not relevant
+ return;
+ }
+ gEngineView.invalidate();
+ }
+ },
+
+ onOK: function engineManager_onOK() {
+ // Remove the observer
+ var os = Cc["@mozilla.org/observer-service;1"].
+ getService(Ci.nsIObserverService);
+ os.removeObserver(this, "browser-search-engine-modified");
+
+ // Commit the changes
+ gEngineView._engineStore.commit();
+ },
+
+ onCancel: function engineManager_onCancel() {
+ // Remove the observer
+ var os = Cc["@mozilla.org/observer-service;1"].
+ getService(Ci.nsIObserverService);
+ os.removeObserver(this, "browser-search-engine-modified");
+ },
+
+ onRestoreDefaults: function engineManager_onRestoreDefaults() {
+ var num = gEngineView._engineStore.restoreDefaultEngines();
+ gEngineView.rowCountChanged(0, num);
+ gEngineView.invalidate();
+ },
+
+ showRestoreDefaults: function engineManager_showRestoreDefaults(val) {
+ document.documentElement.getButton("extra2").disabled = !val;
+ },
+
+ loadAddEngines: function engineManager_loadAddEngines() {
+ this.onOK();
+
+ var formatter = Cc["@mozilla.org/toolkit/URLFormatterService;1"].getService(Ci.nsIURLFormatter);
+ var url = formatter.formatURLPref("browser.search.searchEnginesURL");
+
+ var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+ Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Ci.nsIExternalProtocolService)
+ .loadURI(ios.newURI(url, null, null), window);
+
+ window.close();
+ },
+
+ remove: function engineManager_remove() {
+ gEngineView._engineStore.removeEngine(gEngineView.selectedEngine);
+ var index = gEngineView.selectedIndex;
+ gEngineView.rowCountChanged(index, -1);
+ gEngineView.invalidate();
+ gEngineView.selection.select(Math.min(index, gEngineView.lastIndex));
+ gEngineView.ensureRowIsVisible(Math.min(index, gEngineView.lastIndex));
+ document.getElementById("engineList").focus();
+ },
+
+ /**
+ * Moves the selected engine either up or down in the engine list
+ * @param aDir
+ * -1 to move the selected engine down, +1 to move it up.
+ */
+ bump: function engineManager_move(aDir) {
+ var selectedEngine = gEngineView.selectedEngine;
+ var newIndex = gEngineView.selectedIndex - aDir;
+
+ gEngineView._engineStore.moveEngine(selectedEngine, newIndex);
+
+ gEngineView.invalidate();
+ gEngineView.selection.select(newIndex);
+ gEngineView.ensureRowIsVisible(newIndex);
+ this.showRestoreDefaults(true);
+ document.getElementById("engineList").focus();
+ },
+
+ editKeyword: function engineManager_editKeyword() {
+ var selectedEngine = gEngineView.selectedEngine;
+ if (!selectedEngine)
+ return;
+
+ var prompt = Cc["@mozilla.org/embedcomp/prompt-service;1"].
+ getService(Ci.nsIPromptService);
+ var alias = { value: selectedEngine.alias };
+ var strings = document.getElementById("engineManagerBundle");
+ var title = strings.getString("editTitle");
+ var msg = strings.getFormattedString("editMsg", [selectedEngine.name]);
+
+ while (prompt.prompt(window, title, msg, alias, null, { })) {
+ var eduplicate = false;
+
+ if (alias.value != "") {
+ // Check for duplicates in changes we haven't committed yet
+ let engines = gEngineView._engineStore.engines;
+ for each (let engine in engines) {
+ if (engine.alias == alias.value &&
+ engine.name != selectedEngine.name) {
+ eduplicate = true;
+ break;
+ }
+ }
+ }
+
+ // Notify the user if they have chosen an existing engine keyword
+ if (eduplicate) {
+ var dtitle = strings.getString("duplicateTitle");
+ var emsg = strings.getFormattedString("duplicateEngineMsg",
+ [engine.name]);
+
+ prompt.alert(window, dtitle, emsg);
+ } else {
+ gEngineView._engineStore.changeEngine(selectedEngine, "alias",
+ alias.value);
+ gEngineView.invalidate();
+ break;
+ }
+ }
+ },
+
+ onSelect: function engineManager_onSelect() {
+ // buttons only work if an engine is selected and it's not the last engine
+ var disableButtons = (gEngineView.selectedIndex == -1) ||
+ (gEngineView.lastIndex == 0);
+ var lastSelected = (gEngineView.selectedIndex == gEngineView.lastIndex);
+ var firstSelected = (gEngineView.selectedIndex == 0);
+ var noSelection = (gEngineView.selectedIndex == -1);
+
+ document.getElementById("cmd_remove").setAttribute("disabled",
+ disableButtons);
+
+ document.getElementById("cmd_moveup").setAttribute("disabled",
+ disableButtons || firstSelected);
+
+ document.getElementById("cmd_movedown").setAttribute("disabled",
+ disableButtons || lastSelected);
+ document.getElementById("cmd_editkeyword").setAttribute("disabled",
+ noSelection);
+ }
+};
+
+var gDragObserver = {
+ onDragStart: function (aEvent, aXferData, aDragAction) {
+ var selectedIndex = gEngineView.selectedIndex;
+ if (selectedIndex == -1)
+ return;
+
+ aXferData.data = new TransferData();
+ aXferData.data.addDataForFlavour(ENGINE_FLAVOR, selectedIndex.toString());
+
+ aDragAction.action = Ci.nsIDragService.DRAGDROP_ACTION_MOVE;
+ },
+ onDrop: function (aEvent, aXferData, aDragSession) { },
+ onDragExit: function (aEvent, aDragSession) { },
+ onDragOver: function (aEvent, aFlavour, aDragSession) { },
+ getSupportedFlavours: function() { return null; }
+};
+
+// "Operation" objects
+function EngineMoveOp(aEngineClone, aNewIndex) {
+ if (!aEngineClone)
+ throw new Error("bad args to new EngineMoveOp!");
+ this._engine = aEngineClone.originalEngine;
+ this._newIndex = aNewIndex;
+}
+EngineMoveOp.prototype = {
+ _engine: null,
+ _newIndex: null,
+ commit: function EMO_commit() {
+ var searchService = Cc["@mozilla.org/browser/search-service;1"].
+ getService(Ci.nsIBrowserSearchService);
+ searchService.moveEngine(this._engine, this._newIndex);
+ }
+}
+
+function EngineRemoveOp(aEngineClone) {
+ if (!aEngineClone)
+ throw new Error("bad args to new EngineRemoveOp!");
+ this._engine = aEngineClone.originalEngine;
+}
+EngineRemoveOp.prototype = {
+ _engine: null,
+ commit: function ERO_commit() {
+ var searchService = Cc["@mozilla.org/browser/search-service;1"].
+ getService(Ci.nsIBrowserSearchService);
+ searchService.removeEngine(this._engine);
+ }
+}
+
+function EngineUnhideOp(aEngineClone, aNewIndex) {
+ if (!aEngineClone)
+ throw new Error("bad args to new EngineUnhideOp!");
+ this._engine = aEngineClone.originalEngine;
+ this._newIndex = aNewIndex;
+}
+EngineUnhideOp.prototype = {
+ _engine: null,
+ _newIndex: null,
+ commit: function EUO_commit() {
+ this._engine.hidden = false;
+ var searchService = Cc["@mozilla.org/browser/search-service;1"].
+ getService(Ci.nsIBrowserSearchService);
+ searchService.moveEngine(this._engine, this._newIndex);
+ }
+}
+
+function EngineChangeOp(aEngineClone, aProp, aValue) {
+ if (!aEngineClone)
+ throw new Error("bad args to new EngineChangeOp!");
+
+ this._engine = aEngineClone.originalEngine;
+ this._prop = aProp;
+ this._newValue = aValue;
+}
+EngineChangeOp.prototype = {
+ _engine: null,
+ _prop: null,
+ _newValue: null,
+ commit: function ECO_commit() {
+ this._engine[this._prop] = this._newValue;
+ }
+}
+
+function EngineStore() {
+ var searchService = Cc["@mozilla.org/browser/search-service;1"].
+ getService(Ci.nsIBrowserSearchService);
+ this._engines = searchService.getVisibleEngines({}).map(this._cloneEngine);
+ this._defaultEngines = searchService.getDefaultEngines({}).map(this._cloneEngine);
+
+ this._ops = [];
+
+ // check if we need to disable the restore defaults button
+ var someHidden = this._defaultEngines.some(function (e) {return e.hidden;});
+ gEngineManagerDialog.showRestoreDefaults(someHidden);
+}
+EngineStore.prototype = {
+ _engines: null,
+ _defaultEngines: null,
+ _ops: null,
+
+ get engines() {
+ return this._engines;
+ },
+ set engines(val) {
+ this._engines = val;
+ return val;
+ },
+
+ _getIndexForEngine: function ES_getIndexForEngine(aEngine) {
+ return this._engines.indexOf(aEngine);
+ },
+
+ _getEngineByName: function ES_getEngineByName(aName) {
+ for each (var engine in this._engines)
+ if (engine.name == aName)
+ return engine;
+
+ return null;
+ },
+
+ _cloneEngine: function ES_cloneObj(aEngine) {
+ var newO=[];
+ for (var i in aEngine)
+ newO[i] = aEngine[i];
+ newO.originalEngine = aEngine;
+ return newO;
+ },
+
+ // Callback for Array's some(). A thisObj must be passed to some()
+ _isSameEngine: function ES_isSameEngine(aEngineClone) {
+ return aEngineClone.originalEngine == this.originalEngine;
+ },
+
+ commit: function ES_commit() {
+ var searchService = Cc["@mozilla.org/browser/search-service;1"].
+ getService(Ci.nsIBrowserSearchService);
+ var currentEngine = this._cloneEngine(searchService.currentEngine);
+ for (var i = 0; i < this._ops.length; i++)
+ this._ops[i].commit();
+
+ // Restore currentEngine if it is a default engine that is still visible.
+ // Needed if the user deletes currentEngine and then restores it.
+ if (this._defaultEngines.some(this._isSameEngine, currentEngine) &&
+ !currentEngine.originalEngine.hidden)
+ searchService.currentEngine = currentEngine.originalEngine;
+ },
+
+ addEngine: function ES_addEngine(aEngine) {
+ this._engines.push(this._cloneEngine(aEngine));
+ },
+
+ moveEngine: function ES_moveEngine(aEngine, aNewIndex) {
+ if (aNewIndex < 0 || aNewIndex > this._engines.length - 1)
+ throw new Error("ES_moveEngine: invalid aNewIndex!");
+ var index = this._getIndexForEngine(aEngine);
+ if (index == -1)
+ throw new Error("ES_moveEngine: invalid engine?");
+
+ if (index == aNewIndex)
+ return; // nothing to do
+
+ // Move the engine in our internal store
+ var removedEngine = this._engines.splice(index, 1)[0];
+ this._engines.splice(aNewIndex, 0, removedEngine);
+
+ this._ops.push(new EngineMoveOp(aEngine, aNewIndex));
+ },
+
+ removeEngine: function ES_removeEngine(aEngine) {
+ var index = this._getIndexForEngine(aEngine);
+ if (index == -1)
+ throw new Error("invalid engine?");
+
+ this._engines.splice(index, 1);
+ this._ops.push(new EngineRemoveOp(aEngine));
+ if (this._defaultEngines.some(this._isSameEngine, aEngine))
+ gEngineManagerDialog.showRestoreDefaults(true);
+ },
+
+ restoreDefaultEngines: function ES_restoreDefaultEngines() {
+ var added = 0;
+
+ for (var i = 0; i < this._defaultEngines.length; ++i) {
+ var e = this._defaultEngines[i];
+
+ // If the engine is already in the list, just move it.
+ if (this._engines.some(this._isSameEngine, e)) {
+ this.moveEngine(this._getEngineByName(e.name), i);
+ } else {
+ // Otherwise, add it back to our internal store
+ this._engines.splice(i, 0, e);
+ this._ops.push(new EngineUnhideOp(e, i));
+ added++;
+ }
+ }
+ gEngineManagerDialog.showRestoreDefaults(false);
+ return added;
+ },
+
+ changeEngine: function ES_changeEngine(aEngine, aProp, aNewValue) {
+ var index = this._getIndexForEngine(aEngine);
+ if (index == -1)
+ throw new Error("invalid engine?");
+
+ this._engines[index][aProp] = aNewValue;
+ this._ops.push(new EngineChangeOp(aEngine, aProp, aNewValue));
+ },
+
+ reloadIcons: function ES_reloadIcons() {
+ this._engines.forEach(function (e) {
+ e.uri = e.originalEngine.uri;
+ });
+ }
+}
+
+function EngineView(aEngineStore) {
+ this._engineStore = aEngineStore;
+}
+EngineView.prototype = {
+ _engineStore: null,
+ tree: null,
+
+ get lastIndex() {
+ return this.rowCount - 1;
+ },
+ get selectedIndex() {
+ var seln = this.selection;
+ if (seln.getRangeCount() > 0) {
+ var min = { };
+ seln.getRangeAt(0, min, { });
+ return min.value;
+ }
+ return -1;
+ },
+ get selectedEngine() {
+ return this._engineStore.engines[this.selectedIndex];
+ },
+
+ // Helpers
+ rowCountChanged: function (index, count) {
+ this.tree.rowCountChanged(index, count);
+ },
+
+ invalidate: function () {
+ this.tree.invalidate();
+ },
+
+ ensureRowIsVisible: function (index) {
+ this.tree.ensureRowIsVisible(index);
+ },
+
+ getSourceIndexFromDrag: function () {
+ var dragService = Cc["@mozilla.org/widget/dragservice;1"].
+ getService().QueryInterface(Ci.nsIDragService);
+ var dragSession = dragService.getCurrentSession();
+ var transfer = Cc["@mozilla.org/widget/transferable;1"].
+ createInstance(Ci.nsITransferable);
+
+ transfer.addDataFlavor(ENGINE_FLAVOR);
+ dragSession.getData(transfer, 0);
+
+ var dataObj = {};
+ var len = {};
+ var sourceIndex = -1;
+ try {
+ transfer.getAnyTransferData({}, dataObj, len);
+ } catch (ex) {}
+
+ if (dataObj.value) {
+ sourceIndex = dataObj.value.QueryInterface(Ci.nsISupportsString).data;
+ sourceIndex = parseInt(sourceIndex.substring(0, len.value));
+ }
+
+ return sourceIndex;
+ },
+
+ // nsITreeView
+ get rowCount() {
+ return this._engineStore.engines.length;
+ },
+
+ getImageSrc: function(index, column) {
+ if (column.id == "engineName" && this._engineStore.engines[index].iconURI)
+ return this._engineStore.engines[index].iconURI.spec;
+ return "";
+ },
+
+ getCellText: function(index, column) {
+ if (column.id == "engineName")
+ return this._engineStore.engines[index].name;
+ else if (column.id == "engineKeyword")
+ return this._engineStore.engines[index].alias;
+ return "";
+ },
+
+ setTree: function(tree) {
+ this.tree = tree;
+ },
+
+ canDrop: function(targetIndex, orientation) {
+ var sourceIndex = this.getSourceIndexFromDrag();
+ return (sourceIndex != -1 &&
+ sourceIndex != targetIndex &&
+ sourceIndex != (targetIndex + orientation));
+ },
+
+ drop: function(dropIndex, orientation) {
+ var sourceIndex = this.getSourceIndexFromDrag();
+ var sourceEngine = this._engineStore.engines[sourceIndex];
+
+ if (dropIndex > sourceIndex) {
+ if (orientation == Ci.nsITreeView.DROP_BEFORE)
+ dropIndex--;
+ } else {
+ if (orientation == Ci.nsITreeView.DROP_AFTER)
+ dropIndex++;
+ }
+
+ this._engineStore.moveEngine(sourceEngine, dropIndex);
+ gEngineManagerDialog.showRestoreDefaults(true);
+
+ // Redraw, and adjust selection
+ this.invalidate();
+ this.selection.clearSelection();
+ this.selection.select(dropIndex);
+ },
+
+ selection: null,
+ getRowProperties: function(index, properties) { },
+ getCellProperties: function(index, column, properties) { },
+ getColumnProperties: function(column, properties) { },
+ isContainer: function(index) { return false; },
+ isContainerOpen: function(index) { return false; },
+ isContainerEmpty: function(index) { return false; },
+ isSeparator: function(index) { return false; },
+ isSorted: function(index) { return false; },
+ getParentIndex: function(index) { return -1; },
+ hasNextSibling: function(parentIndex, index) { return false; },
+ getLevel: function(index) { return 0; },
+ getProgressMode: function(index, column) { },
+ getCellValue: function(index, column) { },
+ toggleOpenState: function(index) { },
+ cycleHeader: function(column) { },
+ selectionChanged: function() { },
+ cycleCell: function(row, column) { },
+ isEditable: function(index, column) { return false; },
+ isSelectable: function(index, column) { return false; },
+ setCellValue: function(index, column, value) { },
+ setCellText: function(index, column, value) { },
+ performAction: function(action) { },
+ performActionOnRow: function(action, index) { },
+ performActionOnCell: function(action, index, column) { }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/engineManager.xul
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/"?>
+<?xml-stylesheet href="chrome://instantbird/skin/engineManager.css"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://instantbird/locale/engineManager.dtd">
+
+<dialog id="engineManager"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ buttons="accept,cancel,extra2"
+ buttonlabelextra2="&restoreDefaults.label;"
+ buttonaccesskeyextra2="&restoreDefaults.accesskey;"
+ onload="gEngineManagerDialog.init();"
+ ondialogaccept="gEngineManagerDialog.onOK();"
+ ondialogcancel="gEngineManagerDialog.onCancel();"
+ ondialogextra2="gEngineManagerDialog.onRestoreDefaults();"
+ title="&engineManager.title;"
+ style="&engineManager.style;"
+ persist="screenX screenY"
+ windowtype="Browser:SearchManager">
+
+ <script type="application/x-javascript"
+ src="chrome://instantbird/content/engineManager.js"/>
+ <script type="application/x-javascript"
+ src="chrome://global/content/nsDragAndDrop.js"/>
+
+ <commandset id="engineManagerCommandSet">
+ <command id="cmd_remove"
+ oncommand="gEngineManagerDialog.remove();"
+ disabled="true"/>
+ <command id="cmd_moveup"
+ oncommand="gEngineManagerDialog.bump(1);"
+ disabled="true"/>
+ <command id="cmd_movedown"
+ oncommand="gEngineManagerDialog.bump(-1);"
+ disabled="true"/>
+ <command id="cmd_editkeyword"
+ oncommand="gEngineManagerDialog.editKeyword();"
+ disabled="true"/>
+ </commandset>
+
+ <keyset id="engineManagerKeyset">
+ <key id="delete" keycode="VK_DELETE" command="cmd_remove"/>
+ </keyset>
+
+ <stringbundleset id="engineManagerBundleset">
+ <stringbundle id="engineManagerBundle" src="chrome://instantbird/locale/engineManager.properties"/>
+ </stringbundleset>
+
+ <description>&engineManager.intro;</description>
+ <separator class="thin"/>
+ <hbox flex="1">
+ <tree id="engineList" flex="1" rows="10" hidecolumnpicker="true"
+ seltype="single" onselect="gEngineManagerDialog.onSelect();">
+ <treechildren id="engineChildren" flex="1"
+ ondraggesture="nsDragAndDrop.startDrag(event, gDragObserver);"/>
+ <treecols>
+ <treecol id="engineName" flex="4" label="&columnLabel.name;"/>
+ <treecol id="engineKeyword" flex="1" label="&columnLabel.keyword;"/>
+ </treecols>
+ </tree>
+ <vbox>
+ <spacer flex="1"/>
+ <button id="edit"
+ label="&edit.label;"
+ accesskey="&edit.accesskey;"
+ command="cmd_editkeyword"/>
+ <button id="up"
+ label="&up.label;"
+ accesskey="&up.accesskey;"
+ command="cmd_moveup"/>
+ <button id="dn"
+ label="&dn.label;"
+ accesskey="&dn.accesskey;"
+ command="cmd_movedown"/>
+ <spacer flex="1"/>
+ <button id="remove"
+ label="&remove.label;"
+ accesskey="&remove.accesskey;"
+ command="cmd_remove"/>
+ </vbox>
+ </hbox>
+ <hbox>
+ <label id="addEngines" class="text-link" value="&addEngine.label;"
+ onclick="if (event.button == 0) { gEngineManagerDialog.loadAddEngines(); }"/>
+ <spacer flex="1"/>
+ </hbox>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/content/extensions-discover.js
@@ -0,0 +1,21 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+
+Cu.import("resource://gre/modules/Services.jsm");
+
+let defaultOpen = window.open;
+window.open = function(aUrl) {
+ let uri = Services.io.newURI(aUrl, null, null);
+
+ // http and https are the only schemes that are exposed even
+ // though we don't handle them internally.
+ if (!uri.schemeIs("http") && !uri.schemeIs("https"))
+ defaultOpen.apply(this, arguments);
+ else {
+ Cc["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Ci.nsIExternalProtocolService).loadUrl(uri);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/extensions-discover.xul
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://mozapps/skin/extensions/extensions.css"?>
+
+<!DOCTYPE page [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+%brandDTD;
+<!ENTITY % extensionsDTD SYSTEM "chrome://mozapps/locale/extensions/extensions.dtd">
+%extensionsDTD;
+<!ENTITY % extensions-discoverDTD SYSTEM "chrome://instantbird/locale/extensions-discover.dtd">
+%extensions-discoverDTD;
+]>
+
+<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
+ id="addons-page" style="padding: 0 0; margin: -1px;">
+
+ <script type="application/javascript"
+ src="chrome://instantbird/content/extensions-discover.js"/>
+
+ <!-- discover view -->
+ <box id="view-port-container" flex="1">
+ <vbox id="discover-error" align="center" pack="stretch" flex="1" class="alert-container">
+ <spacer class="alert-spacer-before"/>
+ <hbox>
+ <spacer class="discover-spacer-before"/>
+ <hbox class="alert" align="center">
+ <image class="discover-logo"/>
+ <vbox flex="1" align="stretch">
+ <label class="discover-title">&discover.title;</label>
+ <description class="discover-description">&extensions-discover.description;</description>
+ <description class="discover-footer">&extensions-discover.footer;</description>
+ <label id="addons-website-link" class="text-link"
+ value="https://addons.instantbird.org/"
+ href="https://addons.instantbird.org/"/>
+ </vbox>
+ </hbox>
+ <spacer class="discover-spacer-after"/>
+ </hbox>
+ <spacer class="alert-spacer-after"/>
+ </vbox>
+ </box>
+</page>
new file mode 100644
--- /dev/null
+++ b/im/content/extensions.js
@@ -0,0 +1,211 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+
+Cu.import("resource://gre/modules/Services.jsm");
+Cu.import("resource://gre/modules/AddonManager.jsm");
+Cu.import("resource://gre/modules/PluralForm.jsm");
+
+var addonsRegister = {
+ onload: function () {
+ Services.obs.addObserver(addonsRegister, "addon-install-disabled", false);
+ Services.obs.addObserver(addonsRegister, "addon-install-blocked", false);
+ Services.obs.addObserver(addonsRegister, "addon-install-failed", false);
+ Services.obs.addObserver(addonsRegister, "addon-install-complete", false);
+
+ window.removeEventListener("load", addonsRegister.onload, false);
+ window.addEventListener("unload", addonsRegister.onunload);
+
+ let win = document.getElementById("dummychromebrowser").contentWindow;
+ let open = win.open;
+ win.open = function(aUrl) {
+ let uri = Services.io.newURI(aUrl, null, null);
+
+ // http and https are the only schemes that are exposed even
+ // though we don't handle them internally.
+ if (!uri.schemeIs("http") && !uri.schemeIs("https"))
+ open.apply(this, arguments);
+ else {
+ Cc["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Ci.nsIExternalProtocolService).loadUrl(uri);
+ }
+ };
+ },
+
+ onunload: function () {
+ window.removeEventListener("unload", addonsRegister.onunload, false);
+
+ Services.obs.removeObserver(addonsRegister, "addon-install-disabled");
+ Services.obs.removeObserver(addonsRegister, "addon-install-blocked");
+ Services.obs.removeObserver(addonsRegister, "addon-install-failed");
+ Services.obs.removeObserver(addonsRegister, "addon-install-complete");
+ },
+
+ // Originally taken from
+ // comm-central/source/mail/base/content/specialTabs.js
+ observe: function (aSubject, aTopic, aData) {
+ let brandBundle = document.getElementById("bundle_brand");
+ let extensionsBundle = document.getElementById("bundle_extensions");
+
+ let installInfo = aSubject.QueryInterface(Ci.amIWebInstallInfo);
+ let notificationBox = document.getElementById("addonsNotify");
+ if (!notificationBox)
+ return;
+ let notificationID = aTopic;
+ let brandShortName = brandBundle.getString("brandShortName");
+ let notificationName, messageString, buttons;
+ const iconURL = "chrome://mozapps/skin/extensions/extensionGeneric.png";
+
+ switch (aTopic) {
+ case "addon-install-disabled":
+ notificationID = "xpinstall-disabled";
+
+ if (Services.prefs.prefIsLocked("xpinstall.enabled")) {
+ messageString =
+ extensionsBundle.getString("xpinstallDisabledMessageLocked");
+ buttons = [];
+ } else {
+ messageString = extensionsBundle.getString("xpinstallDisabledMessage");
+
+ buttons = [{
+ label: extensionsBundle.getString("xpinstallDisabledButton"),
+ accessKey:
+ extensionsBundle.getString("xpinstallDisabledButton.accesskey"),
+ popup: null,
+ callback: function editPrefs() {
+ Services.prefs.setBoolPref("xpinstall.enabled", true);
+ return false;
+ }
+ }];
+ }
+ if (!notificationBox.getNotificationWithValue(notificationID)) {
+ notificationBox.appendNotification(
+ messageString, notificationID, iconURL,
+ notificationBox.PRIORITY_CRITICAL_HIGH, buttons);
+ }
+ break;
+ case "addon-install-blocked":
+ messageString =
+ extensionsBundle.getFormattedString("xpinstallPromptWarning",
+ [brandShortName,
+ installInfo.originatingURI.host]);
+
+ buttons = [{
+ label: extensionsBundle.getString("xpinstallPromptAllowButton"),
+ accessKey:
+ extensionsBundle.getString("xpinstallPromptAllowButton.accesskey"),
+ popup: null,
+ callback: function() {
+ installInfo.install();
+ }
+ }];
+
+ if (!notificationBox.getNotificationWithValue(notificationName)) {
+ notificationBox.appendNotification(messageString, notificationName,
+ iconURL,
+ notificationBox.PRIORITY_MEDIUM_HIGH,
+ buttons);
+ }
+ break;
+ case "addon-install-failed":
+ // XXX TODO This isn't terribly ideal for the multiple failure case
+ for (let [, install] in Iterator(installInfo.installs)) {
+ let host = ((installInfo.originatingURI instanceof Ci.nsIStandardURL) &&
+ installInfo.originatingURI.host) ||
+ ((install.sourceURI instanceof Ci.nsIStandardURL) &&
+ install.sourceURI.host);
+
+ let error = (host || install.error == 0) ?
+ "addonError" : "addonLocalError";
+ if (install.error != 0)
+ error += install.error;
+ else if (install.addon.blocklistState ==
+ Ci.nsIBlocklistService.STATE_BLOCKED)
+ error += "Blocklisted";
+ else
+ error += "Incompatible";
+
+ messageString = extensionsBundle.getString(error);
+ messageString = messageString.replace("#1", install.name);
+ if (host)
+ messageString = messageString.replace("#2", host);
+ messageString = messageString.replace("#3", brandShortName);
+ messageString = messageString.replace("#4", Services.appinfo.version);
+
+ if (!notificationBox.getNotificationWithValue(notificationID)) {
+ notificationBox.appendNotification(
+ messageString, notificationID, iconURL,
+ notificationBox.PRIORITY_CRITICAL_HIGH, []);
+ }
+ }
+ break;
+ case "addon-install-complete":
+ let needsRestart = installInfo.installs.some(function(i) {
+ return i.addon.pendingOperations != AddonManager.PENDING_NONE;
+ });
+
+ if (needsRestart) {
+ messageString =
+ extensionsBundle.getString("addonsInstalledNeedsRestart");
+ buttons = [{
+ label: extensionsBundle.getString("addonInstallRestartButton"),
+ accessKey:
+ extensionsBundle.getString("addonInstallRestartButton.accesskey"),
+ popup: null,
+ callback: function() {
+ let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"]
+ .createInstance(Ci.nsISupportsPRBool);
+ Services.obs.notifyObservers(cancelQuit,
+ "quit-application-requested",
+ "restart");
+ if (cancelQuit.data)
+ return; // somebody canceled our quit request
+
+ let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
+ .getService(Ci.nsIAppStartup);
+ appStartup.quit(Ci.nsIAppStartup.eAttemptQuit |
+ Ci.nsIAppStartup.eRestart);
+ }
+ }];
+ } else {
+ messageString = extensionsBundle.getString("addonsInstalled");
+ buttons = [];
+
+ // Calculate the add-on type that is most popular in the list of
+ // installs.
+ let types = {};
+ let bestType = null;
+ for (let [, install] in Iterator(installInfo.installs)) {
+ if (install.type in types)
+ types[install.type]++;
+ else
+ types[install.type] = 1;
+
+ if (!bestType || types[install.type] > types[bestType])
+ bestType = install.type;
+ }
+
+ // Switch to the correct type of addons
+ document.getElementById("dummychromebrowser")
+ .contentWindow
+ .loadView("addons://list/" + bestType);
+ }
+
+ messageString =
+ PluralForm.get(installInfo.installs.length, messageString);
+ messageString = messageString.replace("#1", installInfo.installs[0].name);
+ messageString = messageString.replace("#2", installInfo.installs.length);
+ messageString = messageString.replace("#3", brandShortName);
+
+ notificationBox.appendNotification(messageString, notificationID,
+ iconURL,
+ notificationBox.PRIORITY_INFO_MEDIUM,
+ buttons);
+ break;
+ }
+ }
+};
+
+window.addEventListener("load", addonsRegister.onload);
new file mode 100644
--- /dev/null
+++ b/im/content/extensions.xul
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+#ifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+#endif
+
+<!DOCTYPE window [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+ %brandDTD;
+ <!ENTITY % extensionsDTD SYSTEM "chrome://mozapps/locale/extensions/extensions.dtd">
+ %extensionsDTD;
+]>
+
+<window id="ib-addons-window" title="&addons.windowTitle; - &brandShortName;"
+ width="900" height="600" persist= "width height screenX screenY"
+ windowtype="Addons:Manager" disablefastfind="true"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+#ifdef XP_MACOSX
+#include menus.xul.inc
+#endif
+
+ <stringbundleset>
+ <stringbundle id="bundle_brand"
+ src="chrome://branding/locale/brand.properties"/>
+ <stringbundle id="bundle_extensions"
+ src="chrome://instantbird/locale/extensions.properties"/>
+ </stringbundleset>
+
+ <script type="application/javascript"
+ src="chrome://instantbird/content/extensions.js"/>
+
+ <notificationbox id="addonsNotify" flex="1">
+ <browser id="dummychromebrowser" flex="1"
+ disablesecurity="true" disablehistory="true"
+ src="chrome://mozapps/content/extensions/extensions.xul?type=extensions"/>
+ </notificationbox>
+</window>
new file mode 100644
--- /dev/null
+++ b/im/content/group.xml
@@ -0,0 +1,417 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd" >
+ %instantbirdDTD;
+]>
+
+<bindings id="groupBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="group" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content persist="closed">
+ <xul:image class="twisty"/>
+ <xul:label flex="1" crop="end" xbl:inherits="value=name"/>
+ <xul:button anonid="hideGroupButton" class="hideGroupButton"
+ tooltiptext="&hideGroupTooltip;"/>
+ </content>
+ <implementation implements="nsIObserver">
+ <constructor>
+ <![CDATA[
+ if (this.hasAttribute("closed"))
+ this.setAttribute("aria-expanded", "false");
+ else
+ this.setAttribute("aria-expanded", "true");
+ ]]>
+ </constructor>
+
+ <destructor>
+ <![CDATA[
+ if (this.tag) {
+ this.tag.removeObserver(this);
+ delete this.tag;
+ }
+ ]]>
+ </destructor>
+
+ <method name="build">
+ <parameter name="aGroup"/>
+ <body>
+ <![CDATA[
+ this.tag = aGroup;
+ let contacts = this.tag.getContacts();
+ if (!this.showOffline)
+ contacts = contacts.filter((function (c) c.online), this);
+ if (!contacts.length)
+ return false;
+
+ this.groupId = aGroup.id;
+ this.contacts = [ ];
+ this.contactsById = {};
+ this.setAttribute("id", "group" + this.groupId);
+
+ // restore the potential persisted value
+ var source = Components.classes["@mozilla.org/rdf/datasource;1?name=local-store"]
+ .getService(Components.interfaces.nsIRDFDataSource);
+ var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"]
+ .getService(Components.interfaces.nsIRDFService);
+ var elt = RDF.GetResource(document.location + "#" + this.id);
+ if (source.HasAssertion(elt, RDF.GetResource("closed"),
+ RDF.GetLiteral("true"), true))
+ this.setAttribute("closed", "true");
+
+ contacts.sort(this.sortComparator).forEach(this.addContact, this);
+
+ let name;
+ if (this.tag.id != -1)
+ name = this.tag.name;
+ else {
+ name = Services.strings.createBundle("chrome://instantbird/locale/instantbird.properties")
+ .GetStringFromName("group.otherContacts.name");
+ }
+ this.displayName = name;
+ this._updateGroupLabel();
+ this.tag.addObserver(this);
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <field name="_showOffline">false</field>
+ <property name="showOffline">
+ <getter>
+ <![CDATA[
+ return this._showOffline;
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ this._showOffline = val;
+ if (val) {
+ this.tag.getContacts().filter(function (c) !c.online)
+ .forEach(this.addContact, this);
+ this._updateGroupLabel();
+ }
+ else {
+ this.contacts.filter(function (b) !b.contact.online)
+ .forEach(function (b) {
+ b.destroy();
+ b.parentNode.removeChild(b);
+ }, this);
+ }
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <field name="_selectListener">null</field>
+ <field name="_pendingReorders">[]</field>
+ <method name="_reorderContactLater">
+ <parameter name="aContactElt"/>
+ <body>
+ <![CDATA[
+ if (this._pendingReorders.indexOf(aContactElt) != -1)
+ return;
+
+ this._pendingReorders.push(aContactElt);
+ if (!this._selectListener) {
+ this._selectListener = (function() {
+ let remaining = [];
+ for each (let contactElt in this._pendingReorders) {
+ if (!contactElt.hasAttribute("selected") &&
+ !contactElt.hasAttribute("open"))
+ this.observe(contactElt.contact, "contact-display-name-changed");
+ else
+ remaining.push(contactElt);
+ }
+ this._pendingReorders = remaining;
+ if (remaining.length == 0) {
+ this.parentNode.removeEventListener("select", this._selectListener, false);
+ this._selectListener = null;
+ }
+ }).bind(this);
+ this.parentNode.addEventListener("select", this._selectListener);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <!-- nsIObserver implementation -->
+ <method name="observe">
+ <parameter name="aSubject"/>
+ <parameter name="aTopic"/>
+ <parameter name="aData"/>
+ <body>
+ <![CDATA[
+ if (this.showOffline && (aTopic == "contact-added" ||
+ aTopic == "contact-moved-in") ||
+ !this.showOffline && aSubject.online &&
+ (aTopic == "contact-availability-changed" ||
+ aTopic == "contact-added" ||
+ aTopic == "contact-moved-in")) {
+ this.addContact(aSubject);
+ this._updateGroupLabel();
+ return;
+ }
+
+ if (aTopic == "contact-no-longer-dummy") {
+ let oldId = parseInt(aData);
+ if (this.contactsById.hasOwnProperty(oldId)) {
+ let contact = this.contactsById[oldId];
+ delete this.contactsById[oldId];
+ this.contactsById[contact.contact.id] = contact;
+ }
+ return;
+ }
+
+ if (aTopic == "contact-display-name-changed") {
+ this.updateContactPosition(aSubject);
+ return;
+ }
+
+ if (aTopic == "tag-hidden") {
+ this.setAttribute("collapsing", "true");
+ this.addEventListener("transitionend", this._transitionEnd, true);
+ for each (let contact in this.contacts) {
+ contact.state = "collapsing";
+ contact.destroy();
+ }
+ return;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <!-- Takes as input two contact elements (imIContact type) and compares
+ - their nicknames alphabetically (case insensitive). This method
+ - behaves as a callback that Array.sort accepts as a parameter.
+ -->
+ <method name="sortComparator">
+ <parameter name="aContactA"/>
+ <parameter name="aContactB"/>
+ <body>
+ <![CDATA[
+ let a = aContactA.displayName.toLowerCase();
+ let b = aContactB.displayName.toLowerCase();
+ return a.localeCompare(b);
+ ]]>
+ </body>
+ </method>
+
+ <method name="addContact">
+ <parameter name="aContact"/>
+ <body>
+ <![CDATA[
+ if (this.contactsById.hasOwnProperty(aContact.id))
+ return;
+
+ var contactElt = document.createElement("contact");
+ if (this.hasAttribute("closed"))
+ contactElt.setAttribute("collapsed", "true");
+
+ let end = this.contacts.length;
+ // Avoid the binary search loop if the contacts were already sorted.
+ if (end != 0 &&
+ this.sortComparator(aContact, this.contacts[end - 1].contact) < 0) {
+ let start = 0;
+ while (start < end) {
+ let middle = start + Math.floor((end - start) / 2);
+ if (this.sortComparator(aContact, this.contacts[middle].contact) < 0)
+ end = middle;
+ else
+ start = middle + 1;
+ }
+ }
+ var last = end == 0 ? this : this.contacts[end - 1];
+ this.parentNode.insertBefore(contactElt, last.nextSibling);
+ contactElt.build(aContact, this);
+ this.contacts.splice(end, 0, contactElt);
+ this.contactsById[aContact.id] = contactElt;
+
+ if (this.hasAttribute("collapsing"))
+ this.removeAttribute("collapsing");
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateContactPosition">
+ <parameter name="aSubject"/>
+ <body>
+ <![CDATA[
+ let contactElt = this.contactsById[aSubject.id];
+ let index = this.contacts.indexOf(contactElt);
+ if (index == -1) {
+ // Sometimes we get a display-name-changed notification for
+ // an offline contact, if it's not in the list, just ignore it.
+ return;
+ }
+ // See if the position of the contact should be changed.
+ if (index != 0 &&
+ this.sortComparator(contactElt.contact, this.contacts[index - 1].contact) < 0 ||
+ index != this.contacts.length - 1 &&
+ this.sortComparator(contactElt.contact, this.contacts[index + 1].contact) > 0) {
+ // Check if something prevents us from moving the contact now.
+ if (contactElt.hasAttribute("selected") ||
+ contactElt.hasAttribute("open"))
+ this._reorderContactLater(contactElt);
+ else {
+ contactElt.removeNode(true);
+ this.addContact(aSubject);
+ }
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeContact">
+ <parameter name="aContact"/>
+ <body>
+ <![CDATA[
+ var i = this.contacts.indexOf(aContact);
+ if (i == -1)
+ throw "Removing a contact that doesn't exist?";
+
+ // create a new array to remove without breaking for each loops.
+ this.contacts = this.contacts.filter(function(c) c !== aContact);
+ delete this.contactsById[aContact.contact.id];
+
+ // Check if some contacts remain in the group, if empty remove it
+ if (!this.contacts.length) {
+ this.setAttribute("collapsing", "true");
+ this.addEventListener("transitionend", this._transitionEnd, true);
+ }
+ else
+ this._updateGroupLabel();
+ ]]>
+ </body>
+ </method>
+
+ <method name="_transitionEnd">
+ <body>
+ <![CDATA[
+ if (!this.hasAttribute("collapsing"))
+ return;
+ this.tag.removeObserver(this);
+ this.parentNode.removeGroup(this);
+ ]]>
+ </body>
+ </method>
+
+ <method name="hide">
+ <body>
+ <![CDATA[
+ const promptPrefName = "messenger.buddies.hideTagPrompt";
+ if (Services.prefs.getBoolPref(promptPrefName)) {
+ let bundle =
+ Services.strings.createBundle("chrome://instantbird/locale/instantbird.properties");
+ let name = this.displayName;
+ let promptTitle =
+ bundle.formatStringFromName("group.hidePrompt.title", [name], 1);
+ let promptMessage =
+ bundle.formatStringFromName("group.hidePrompt.message", [name], 1);
+ let hideButton = bundle.GetStringFromName("group.hidePrompt.button");
+ let promptCheckbox =
+ bundle.GetStringFromName("group.hidePrompt.checkbox");
+ let prompts = Services.prompt;
+ let checkbox = {};
+ let flags = prompts.BUTTON_TITLE_IS_STRING * prompts.BUTTON_POS_0 +
+ prompts.BUTTON_TITLE_CANCEL * prompts.BUTTON_POS_1 +
+ prompts.BUTTON_POS_0_DEFAULT;
+ if (prompts.confirmEx(window, promptTitle, promptMessage, flags,
+ hideButton, null, null, promptCheckbox, checkbox))
+ return;
+
+ if (!checkbox.value)
+ Services.prefs.setBoolPref(promptPrefName, false);
+ }
+ Services.tags.hideTag(this.tag);
+ ]]>
+ </body>
+ </method>
+
+ <method name="_updateClosedState">
+ <parameter name="aClosed"/>
+ <body>
+ <![CDATA[
+ for each (let contact in this.contacts)
+ contact.collapsed = aClosed;
+ ]]>
+ </body>
+ </method>
+
+ <method name="close">
+ <body>
+ <![CDATA[
+ if (this.hasAttribute("closed")) {
+ this.removeAttribute("closed");
+ this.setAttribute("aria-expanded", "true");
+ this._updateClosedState(false);
+ }
+ else {
+ this.setAttribute("closed", "true");
+ this.setAttribute("aria-expanded", "false");
+ this._updateClosedState(true);
+ }
+
+ this._updateGroupLabel();
+ ]]>
+ </body>
+ </method>
+
+ <field name="displayName"></field>
+ <method name="_updateGroupLabel">
+ <body>
+ <![CDATA[
+ let name = this.displayName;
+ if (this.hasAttribute("closed"))
+ name += " (" + this.contacts.length + ")";
+
+ this.setAttribute("name", name);
+ ]]>
+ </body>
+ </method>
+
+ <method name="keyPress">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ switch (aEvent.keyCode) {
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ this.close();
+ break;
+
+ case aEvent.DOM_VK_LEFT:
+ if (!this.hasAttribute("closed"))
+ this.close();
+ break;
+
+ case aEvent.DOM_VK_RIGHT:
+ if (this.hasAttribute("closed"))
+ this.close();
+ break;
+ }
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="click">
+ <![CDATA[
+ // Check if there was 1 click on the image or 2 clicks on the label
+ if ((event.detail == 1 && event.originalTarget.localName == "image") ||
+ (event.detail == 2 && event.originalTarget.localName == "label"))
+ this.close();
+
+ if (event.originalTarget.localName == "button")
+ this.hide();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/hiddenWindow.xul
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+# -*- Mode: HTML -*-
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+
+<window id="main-window"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+#include menus.xul.inc
+
+<script type="application/javascript">
+ addEventListener("load", function() {
+ // disable the minimize and zoom menu items.
+ ["minimizeWindow", "zoomWindow"].forEach(function(aId) {
+ document.getElementById(aId).setAttribute("disabled", "true");
+ });
+
+ // also hide the window-list separator
+ document.getElementById("sep-window-list").setAttribute("hidden", "true");
+ });
+</script>
+
+<browser id="hiddenBrowser" disablehistory="true"/>
+
+</window>
+
+#endif
new file mode 100644
--- /dev/null
+++ b/im/content/instantbird.css
@@ -0,0 +1,68 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+conversation {
+ -moz-binding: url("chrome://instantbird/content/conversation.xml#conversation");
+}
+
+newtab {
+ -moz-binding: url("chrome://instantbird/content/newtab.xml#newtab");
+}
+
+.newtab-item {
+ -moz-binding: url("chrome://instantbird/content/newtab.xml#newtab-item");
+}
+
+aboutPanel {
+ -moz-binding: url("chrome://instantbird/content/aboutPanel.xml#aboutPanel");
+}
+
+.conv-chat:not([chat]) {
+ display: none;
+}
+
+.statusMessage[editable],
+.statusMessageWithDash[editable] {
+ cursor: text !important;
+}
+
+.statusMessage[editing] {
+ -moz-appearance: textfield;
+ -moz-binding: url('chrome://global/content/bindings/textbox.xml#textbox');
+}
+
+@media all and (min-height: 251px) {
+ .conv-top-info {
+ -moz-binding: url("chrome://instantbird/content/conversation.xml#conv-info-large") !important;
+ }
+}
+
+@media all and (max-height: 250px) {
+ .conv-top-info {
+ -moz-binding: url("chrome://instantbird/content/conversation.xml#conv-info-small") !important;
+ }
+
+ .statusMessage:not([editing]),
+ .statusMessageWithDash[editing] {
+ display: none;
+ }
+}
+
+@media all and (max-height: 200px) {
+ .conv-top-info {
+ display: none;
+ }
+}
+
+.alltargets-item {
+ -moz-binding: url("chrome://instantbird/content/conversation.xml#menuitem-target");
+}
+
+browser[type="content-conversation"] {
+ -moz-binding: url("chrome://chat/content/convbrowser.xml#browser");
+}
+
+findbar {
+ overflow-x: hidden;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/instantbird.js
@@ -0,0 +1,146 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+var TAB_DROP_TYPE = "application/x-moz-tabbrowser-tab";
+
+var convWindow = {
+ load: function mo_load() {
+ Components.utils.import("resource:///modules/imWindows.jsm");
+ Conversations.registerWindow(window);
+
+ if ("arguments" in window) {
+ while (window.arguments[0] &&
+ window.arguments[0] instanceof XULElement) {
+ // swap the given tab with the default dummy conversation tab
+ // and then close the original tab in the other window.
+ let tab = window.arguments.shift();
+ getTabBrowser().importPanel(tab);
+ }
+ }
+
+ window.addEventListener("unload", convWindow.unload);
+ window.addEventListener("resize", convWindow.onresize);
+ window.addEventListener("activate", convWindow.onactivate, true);
+ window.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIWebNavigation)
+ .QueryInterface(Ci.nsIDocShellTreeItem).treeOwner
+ .QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIXULWindow)
+ .XULBrowserWindow = window.XULBrowserWindow;
+ },
+ unload: function mo_unload() {
+ Conversations.unregisterWindow(window);
+ },
+ onactivate: function mo_onactivate(aEvent) {
+ Conversations.onWindowFocus(window);
+ setTimeout(function () {
+ // setting the focus to the textbox just after the window is
+ // activated puts the textbox in an inconsistent state, some
+ // special characters like ^ don't work, so delay the focus
+ // operation...
+ let panel = getTabBrowser().selectedPanel;
+ panel.focus();
+ if ("onSelect" in panel)
+ panel.onSelect();
+ }, 0);
+ },
+ onresize: function mo_onresize(aEvent) {
+ if (aEvent.originalTarget != window)
+ return;
+
+ // Resize each textbox (if the splitter has not been used).
+ let panels = getTabBrowser().tabPanels;
+ for (let panel of panels) {
+ if ("onResize" in panel)
+ panel.onResize(aEvent);
+ }
+ }
+};
+
+function getConvWindowURL() "chrome://instantbird/content/instantbird.xul"
+
+function getTabBrowser() document.getElementById("conversations")
+
+function getBrowser() getTabBrowser().selectedBrowser
+
+// Copied from mozilla/browser/base/content/browser.js (and simplified)
+var XULBrowserWindow = {
+ // Stored Status
+ status: "",
+ defaultStatus: "",
+ jsStatus: "",
+ jsDefaultStatus: "",
+ overLink: "",
+ statusText: "",
+
+ QueryInterface: function (aIID) {
+ if (aIID.equals(Ci.nsISupportsWeakReference) ||
+ aIID.equals(Ci.nsIXULBrowserWindow) ||
+ aIID.equals(Ci.nsISupports))
+ return this;
+ throw Cr.NS_NOINTERFACE;
+ },
+
+ get statusTextField () {
+ delete this.statusTextField;
+ return this.statusTextField = document.getElementById("statusbar-display");
+ },
+
+ setStatus: function (status) {
+ this.status = status;
+ this.updateStatusField();
+ },
+
+ setJSStatus: function (status) {
+ this.jsStatus = status;
+ this.updateStatusField();
+ },
+
+ setJSDefaultStatus: function (status) {
+ this.jsDefaultStatus = status;
+ this.updateStatusField();
+ },
+
+ setDefaultStatus: function (status) {
+ this.defaultStatus = status;
+ this.updateStatusField();
+ },
+
+ setOverLink: function (link, b) {
+ // Encode bidirectional formatting characters.
+ // (RFC 3987 sections 3.2 and 4.1 paragraph 6)
+ this.overLink = link.replace(/[\u200e\u200f\u202a\u202b\u202c\u202d\u202e]/g,
+ encodeURIComponent);
+ this.updateStatusField();
+ },
+
+ // Called before links are navigated to, allows us to retarget them if needed.
+ onBeforeLinkTraversal: function(originalTarget, linkURI, linkNode, isAppTab) {
+ return originalTarget;
+ },
+
+ setStatusEnd: function (aStatusEndText, aError) {
+ let field = document.getElementById("statusbar-display-end");
+ field.label = aStatusEndText;
+ field.hidden = !aStatusEndText;
+ if (aError)
+ field.setAttribute("error", "true");
+ else
+ field.removeAttribute("error");
+ },
+
+ updateStatusField: function () {
+ var text = this.overLink || this.status || this.jsStatus || this.jsDefaultStatus || this.defaultStatus;
+
+ // check the current value so we don't trigger an attribute change
+ // and cause needless (slow!) UI updates
+ if (this.statusText != text) {
+ this.statusTextField.label = text;
+ this.statusText = text;
+ }
+ }
+}
+
+this.addEventListener("load", convWindow.load);
new file mode 100644
--- /dev/null
+++ b/im/content/instantbird.xul
@@ -0,0 +1,214 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/instantbird.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/blist.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/tabbrowser.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/tabbrowser.css" type="text/css"?>
+#ifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+#endif
+
+<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
+
+<!DOCTYPE window [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+ <!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd">
+ %textcontextDTD;
+]>
+
+<window
+ id = "convWindow"
+ windowtype="Messenger:convs"
+ title = "&convWindow.title;"
+ titlemenuseparator="&convWindow.titlemodifiermenuseparator;"
+ titlemodifier="&convWindow.titlemodifier;"
+ width = "500"
+ height = "600"
+ onclose= "return getTabBrowser().warnAboutClosingTabs(true);"
+ persist= "width height screenX screenY"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/instantbird.js"/>
+#ifdef XP_MACOSX
+ <script type="application/javascript" src="chrome://instantbird/content/macgestures.js"/>
+#else
+ <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
+#endif
+ <script type="application/javascript" src="chrome://global/content/viewZoomOverlay.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/convZoom.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/nsContextMenu.js"/>
+
+#ifdef XP_MACOSX
+#include menus.xul.inc
+#endif
+
+ <commandset id="conversationsCommands">
+ <command id="cmd_newtab" oncommand="Conversations.showNewTab()"/>
+ <command id="cmd_close" oncommand="getTabBrowser().removeCurrentTab()"/>
+ <command id="cmd_putOnHold"
+ oncommand="var tabbrowser = getTabBrowser();
+ if (!tabbrowser.selectedConversation) return;
+ tabbrowser.selectedConversation.hide();
+ tabbrowser.removeCurrentTab();"/>
+ <command id="cmd_showLogs"
+ oncommand="var conv = getTabBrowser().selectedConversation;
+ if (conv) conv.showLogs();"/>
+ <command id="cmd_textZoomReduce" oncommand="if (getBrowser()) FullZoom.reduce();"/>
+ <command id="cmd_textZoomEnlarge" oncommand="if (getBrowser()) FullZoom.enlarge();"/>
+ <command id="cmd_textZoomReset" oncommand="if (getBrowser()) FullZoom.reset();"/>
+ <command id="cmd_find"
+ oncommand="var conv = getTabBrowser().selectedConversation;
+ if (conv) conv.findbar.onFindCommand();"/>
+ <command id="cmd_findAgain"
+ oncommand="var conv = getTabBrowser().selectedConversation;
+ if (conv) conv.findbar.onFindAgainCommand(true);"/>
+ <command id="cmd_findPrevious"
+ oncommand="var conv = getTabBrowser().selectedConversation;
+ if (conv) conv.findbar.onFindAgainCommand(false);"/>
+ <commandset id="editMenuCommands"/>
+ </commandset>
+
+ <keyset id="conversationsKeys">
+ <key id="key_newtab" key="t" modifiers="accel" command="cmd_newtab"/>
+ <key id="key_close" key="w" modifiers="accel" command="cmd_close"/>
+ <key id="key_putOnHold" keycode="VK_ESCAPE" command="cmd_putOnHold"/>
+ <key id="key_showLogs" key="h" modifiers="accel,shift" command="cmd_showLogs"/>
+ <key id="key_textZoomEnlarge" key="&textEnlarge.commandkey;" command="cmd_textZoomEnlarge" modifiers="accel"/>
+ <key id="key_textZoomEnlarge2" key="&textEnlarge.commandkey2;" command="cmd_textZoomEnlarge" modifiers="accel"/>
+ <key id="key_textZoomEnlarge3" key="&textEnlarge.commandkey3;" command="cmd_textZoomEnlarge" modifiers="accel"/>
+ <key id="key_textZoomReduce" key="&textReduce.commandkey;" command="cmd_textZoomReduce" modifiers="accel"/>
+ <key id="key_textZoomReduce2" key="&textReduce.commandkey2;" command="cmd_textZoomReduce" modifiers="accel"/>
+ <key id="key_textZoomReset" key="&textReset.commandkey;" command="cmd_textZoomReset" modifiers="accel"/>
+ <key id="key_textZoomReset2" key="&textReset.commandkey2;" command="cmd_textZoomReset" modifiers="accel"/>
+ <key id="key_find" key="&findOnCmd.commandkey;" command="cmd_find" modifiers="accel"/>
+ <key id="key_findAgain" key="&findAgainCmd.commandkey;" command="cmd_findAgain" modifiers="accel"/>
+ <key id="key_findPrevious" key="&findAgainCmd.commandkey;" command="cmd_findPrevious" modifiers="accel,shift"/>
+ <key keycode="&findAgainCmd.commandkey2;" command="cmd_findAgain"/>
+ <key keycode="&findAgainCmd.commandkey2;" command="cmd_findPrevious" modifiers="shift"/>
+
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+#define XP_LINUX
+#endif
+#endif
+#ifdef XP_LINUX
+#define NUM_SELECT_TAB_MODIFIER alt
+#else
+#define NUM_SELECT_TAB_MODIFIER accel
+#endif
+#expand <key id="key_selectTab1" oncommand="getTabBrowser().selectTabAtIndex(0, event);" key="1" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectTab2" oncommand="getTabBrowser().selectTabAtIndex(1, event);" key="2" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectTab3" oncommand="getTabBrowser().selectTabAtIndex(2, event);" key="3" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectTab4" oncommand="getTabBrowser().selectTabAtIndex(3, event);" key="4" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectTab5" oncommand="getTabBrowser().selectTabAtIndex(4, event);" key="5" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectTab6" oncommand="getTabBrowser().selectTabAtIndex(5, event);" key="6" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectTab7" oncommand="getTabBrowser().selectTabAtIndex(6, event);" key="7" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectTab8" oncommand="getTabBrowser().selectTabAtIndex(7, event);" key="8" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+#expand <key id="key_selectLastTab" oncommand="getTabBrowser().selectTabAtIndex(-1, event);" key="9" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
+ </keyset>
+
+ <stringbundleset id="stringbundleset">
+ <stringbundle id="bundle_instantbird" src="chrome://instantbird/locale/instantbird.properties"/>
+ </stringbundleset>
+
+ <popupset id="mainPopupSet">
+ <tooltip id="buddyTooltip" type="buddy"/>
+
+ <menupopup id="contentAreaContextMenu"
+ onpopupshowing="if (event.target != this) return true; gContextMenu = new nsContextMenu(this, window.getBrowser()); return gContextMenu.shouldDisplay;"
+ onpopuphiding="if (event.target == this && gContextMenu) { gContextMenu.cleanup(); gContextMenu = null; }">
+ <menuitem id="context-nick-openconv"
+ oncommand="gContextMenu.nickOpenConv();"/>
+ <menuitem id="context-nick-showlogs"
+ oncommand="gContextMenu.nickShowLogs();"/>
+ <menu id="context-nick-addcontact">
+ <menupopup id="context-tags-popup"
+ oncommand="gContextMenu.tagMenu.tag(event, gContextMenu.nickAddContact.bind(gContextMenu));"
+ onpopupshowing="gContextMenu.tagMenu.tagsPopupShowing();">
+ <menuseparator id="context-create-tag-separator"/>
+ <menuitem id="context-create-tag"
+ label="&addNewTagCmd.label;"
+ accesskey="&addNewTagCmd.accesskey;"
+ oncommand="gContextMenu.tagMenu.addNewTag(gContextMenu.nickAddContact.bind(gContextMenu));"/>
+ </menupopup>
+ </menu>
+ <menuseparator id="context-sep-nick"/>
+
+ <menuitem id="context-openlink"
+ label="&openLinkCmd.label;"
+ accesskey="&openLinkCmd.accesskey;"
+ oncommand="gContextMenu.openLink();"/>
+ <menuitem id="context-copyemail"
+ label="©EmailCmd.label;"
+ accesskey="©EmailCmd.accesskey;"
+ oncommand="gContextMenu.copyEmail();"/>
+ <menuitem id="context-copylink"
+ label="©LinkCmd.label;"
+ accesskey="©LinkCmd.accesskey;"
+ oncommand="goDoCommand('cmd_copyLink');"/>
+ <menuseparator id="context-sep-copylink"/>
+
+ <menuitem id="context-copy"
+ label="©Cmd.label;"
+ accesskey="©Cmd.accesskey;"
+ command="cmd_copy"/>
+ <menuitem id="context-selectall"
+ label="&selectAllCmd.label;"
+ accesskey="&selectAllCmd.accesskey;"
+ command="cmd_selectAll"/>
+ <menuseparator id="context-sep-selectall"/>
+ <menuseparator id="context-sep-messageactions"/>
+ <menuitem id="context-searchselect"
+ oncommand="gContextMenu.searchSelection();"/>
+ <menu id="context-searchselect-with">
+ <menupopup id="context-popup-searchselect-with"
+ onpopupshowing="gContextMenu.buildSearchEngineList();"
+ oncommand="gContextMenu.searchSelectionWith(event)">
+ <menuseparator id="context-sep-enginemanager"/>
+ <menuitem id="context-enginemanager"
+ label="&engineManagerCmd.label;"
+ oncommand="gContextMenu.openEngineManager();"/>
+ </menupopup>
+ </menu>
+ </menupopup>
+ </popupset>
+
+ <tabconversation id="conversations" flex="1"
+ contenttooltip="buddyTooltip"
+ contentcontextmenu="contentAreaContextMenu"/>
+
+#ifdef XP_MACOSX
+ <svg:svg height="0">
+ <svg:mask id="pinstripe-tab-left-curve-mask" maskContentUnits="userSpaceOnUse">
+ <svg:circle cx="9" cy="3" r="3" fill="white"/>
+ <svg:rect x="9" y="0" width="3" height="3" fill="white"/>
+ <svg:rect x="6" y="3" width="6" height="19" fill="white"/>
+ <svg:rect x="1" y="17" width="5" height="5" fill="white"/>
+ <svg:circle cx="1" cy="17" r="5"/>
+ <svg:rect x="0" y="22" width="12" height="1" fill="white"/>
+ </svg:mask>
+ <svg:mask id="pinstripe-tab-right-curve-mask" maskContentUnits="userSpaceOnUse">
+ <svg:circle cx="3" cy="3" r="3" fill="white"/>
+ <svg:rect x="0" y="0" width="3" height="3" fill="white"/>
+ <svg:rect x="0" y="3" width="6" height="19" fill="white"/>
+ <svg:rect x="6" y="17" width="5" height="5" fill="white"/>
+ <svg:circle cx="11" cy="17" r="5"/>
+ <svg:rect x="0" y="22" width="12" height="1" fill="white"/>
+ </svg:mask>
+ </svg:svg>
+#endif
+
+ <statusbar id="convWindow-statusbar">
+ <statusbarpanel id="statusbar-display" label="" crop="end" flex="1"/>
+ <statusbarpanel id="statusbar-display-end" label=""/>
+ </statusbar>
+</window>
new file mode 100644
--- /dev/null
+++ b/im/content/jar.mn
@@ -0,0 +1,117 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+instantbird.jar:
+% content instantbird %content/instantbird/
+#ifdef XP_MACOSX
+% overlay chrome://global/content/console.xul chrome://instantbird/content/jsConsoleOverlay.xul
+% overlay chrome://mozapps/content/update/updates.xul chrome://instantbird/content/softwareUpdateOverlay.xul
+#endif
+ content/instantbird/aboutDialog.css
+* content/instantbird/aboutDialog.xul
+ content/instantbird/aboutPanel.xml
+ content/instantbird/account.js
+ content/instantbird/accounts.css
+ content/instantbird/accounts.js
+* content/instantbird/accounts.xul
+ content/instantbird/accountWizard.css
+ content/instantbird/accountWizard.js
+ content/instantbird/accountWizard.xul
+ content/instantbird/accountWizard.xml
+ content/instantbird/account.xml
+ content/instantbird/account.xul
+ content/instantbird/addbuddy.js
+ content/instantbird/addbuddy.xul
+ content/instantbird/newtab.xml
+ content/instantbird/blist.css
+ content/instantbird/blist.js
+* content/instantbird/blist.xul
+ content/instantbird/buddy.xml
+ content/instantbird/buddytooltip.css
+* content/instantbird/buddytooltip.xml
+ content/instantbird/contact.xml
+ content/instantbird/conversation.xml
+ content/instantbird/conv.xml
+ content/instantbird/credits.xhtml
+ content/instantbird/engineManager.js
+ content/instantbird/engineManager.xul
+ content/instantbird/extensions.js
+* content/instantbird/extensions.xul
+ content/instantbird/extensions-discover.js
+ content/instantbird/extensions-discover.xul
+ content/instantbird/group.xml
+ content/instantbird/instantbird.css
+ content/instantbird/instantbird.js
+* content/instantbird/instantbird.xul
+ content/instantbird/convZoom.js
+ content/instantbird/joinchat.js
+ content/instantbird/joinchat.xul
+ content/instantbird/jsTreeView.js
+* content/instantbird/menus.xul
+* content/instantbird/menus.js
+ content/instantbird/nsContextMenu.js
+ content/instantbird/proxies.js
+ content/instantbird/proxies.xul
+ content/instantbird/proxies.css
+ content/instantbird/proxy.xml
+* content/instantbird/tabbrowser.xml
+ content/instantbird/tabbrowser.css
+ content/instantbird/utilities.js
+* content/instantbird/viewlog.xul
+ content/instantbird/viewlog.js
+ content/instantbird/viewlog.css
+#ifdef XP_MACOSX
+* content/instantbird/hiddenWindow.xul
+ content/instantbird/menus-mac.xul
+ content/instantbird/macgestures.js
+* content/instantbird/jsConsoleOverlay.xul
+* content/instantbird/softwareUpdateOverlay.xul
+#elifdef XP_WIN
+ content/instantbird/menus-win.xul
+#else
+ content/instantbird/menus-unix.xul
+#endif
+* content/instantbird/preferences/advanced.xul (preferences/advanced.xul)
+* content/instantbird/preferences/advanced.js (preferences/advanced.js)
+ content/instantbird/preferences/applications.xul (preferences/applications.xul)
+* content/instantbird/preferences/applications.js (preferences/applications.js)
+ content/instantbird/preferences/applicationManager.xul (preferences/applicationManager.xul)
+* content/instantbird/preferences/applicationManager.js (preferences/applicationManager.js)
+* content/instantbird/preferences/colors.xul (preferences/colors.xul)
+ content/instantbird/preferences/content.xul (preferences/content.xul)
+ content/instantbird/preferences/content.js (preferences/content.js)
+* content/instantbird/preferences/connection.xul (preferences/connection.xul)
+ content/instantbird/preferences/connection.js (preferences/connection.js)
+ content/instantbird/preferences/handlers.xml (preferences/handlers.xml)
+ content/instantbird/preferences/handlers.css (preferences/handlers.css)
+* content/instantbird/preferences/main.xul (preferences/main.xul)
+ content/instantbird/preferences/main.js (preferences/main.js)
+* content/instantbird/preferences/preferences.xul (preferences/preferences.xul)
+ content/instantbird/preferences/privacy.xul (preferences/privacy.xul)
+ content/instantbird/preferences/privacy.js (preferences/privacy.js)
+ content/instantbird/preferences/themes.xul (preferences/themes.xul)
+ content/instantbird/preferences/themes.js (preferences/themes.js)
+ content/instantbird/preferences/tabs.xul (preferences/tabs.xul)
+ content/instantbird/preferences/tabs.js (preferences/tabs.js)
+ content/instantbird/preferences/messagestyle.js (preferences/messagestyle.js)
+ content/instantbird/preferences/smileys.js (preferences/smileys.js)
+ content/instantbird/preferences/smiley.css (preferences/smiley.css)
+ content/instantbird/preferences/smiley.xml (preferences/smiley.xml)
+# override the toolkit license.html file
+*+ content/instantbird/license.html (/mozilla/toolkit/content/license.html)
+% override chrome://global/content/license.html chrome://instantbird/content/license.html
+
+#ifdef DEBUG
+debug.jar:
+% content debug %content/debug/
+% overlay chrome://instantbird/content/menus.xul chrome://debug/content/debug.xul
+% overlay chrome://instantbird/content/instantbird.xul chrome://debug/content/viewselectionsource.xul
+ content/debug/debug.js (debug/debug.js)
+ content/debug/debug.xul (debug/debug.xul)
+ content/debug/viewselectionsource.xul (debug/viewselectionsource.xul)
+% content fake %content/fake/
+% overlay chrome://instantbird/content/blist.xul chrome://fake/content/fake.xul
+ content/fake/fake.js (debug/fake/fake.js)
+ content/fake/fake.xul (debug/fake/fake.xul)
+#endif
new file mode 100644
--- /dev/null
+++ b/im/content/joinchat.js
@@ -0,0 +1,151 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource:///modules/imWindows.jsm");
+
+const autoJoinPref = "autoJoin";
+
+var joinChat = {
+ onload: function jc_onload() {
+ var accountList = document.getElementById("accountlist");
+ for (let acc in this.getAccounts()) {
+ if (!acc.connected || !acc.canJoinChat)
+ continue;
+ var proto = acc.protocol;
+ var item = accountList.appendItem(acc.name, acc.id, proto.name);
+ item.setAttribute("image", proto.iconBaseURI + "icon.png");
+ item.setAttribute("class", "menuitem-iconic");
+ item.account = acc;
+ }
+ if (!accountList.itemCount) {
+ document.getElementById("joinChatDialog").cancelDialog();
+ throw "No connected MUC enabled account!";
+ }
+ accountList.selectedIndex = 0;
+ },
+
+ onAccountSelect: function jc_onAccountSelect() {
+ let ab = document.getElementById("separatorRow1");
+ while (ab.nextSibling && ab.nextSibling.id != "separatorRow2")
+ ab.parentNode.removeChild(ab.nextSibling);
+
+ let acc = document.getElementById("accountlist").selectedItem.account;
+ let sep = document.getElementById("separatorRow2");
+ let defaultValues = acc.getChatRoomDefaultFieldValues();
+ joinChat._values = defaultValues;
+ joinChat._fields = [];
+ joinChat._account = acc;
+
+ let protoId = acc.protocol.id;
+ document.getElementById("autojoin").hidden =
+ !(protoId == "prpl-irc" || protoId == "prpl-jabber" ||
+ protoId == "prpl-gtalk");
+
+ for (let field in getIter(acc.getChatRoomFields())) {
+ let row = document.createElement("row");
+
+ let label = document.createElement("label");
+ let text = field.label;
+ let match = /_(.)/.exec(text);
+ if (match) {
+ label.setAttribute("accesskey", match[1]);
+ text = text.replace(/_/, "");
+ }
+ label.setAttribute("value", text);
+ label.setAttribute("control", "field-" + field.identifier);
+ row.appendChild(label);
+
+ let textbox = document.createElement("textbox");
+ textbox.setAttribute("id", "field-" + field.identifier);
+ let val = defaultValues.getValue(field.identifier);
+ if (val)
+ textbox.setAttribute("value", val);
+ if (field.type == Ci.prplIChatRoomField.TYPE_PASSWORD)
+ textbox.setAttribute("type", "password");
+ else if (field.type == Ci.prplIChatRoomField.TYPE_INT) {
+ textbox.setAttribute("type", "number");
+ textbox.setAttribute("min", field.min);
+ textbox.setAttribute("max", field.max);
+ }
+ row.appendChild(textbox);
+
+ if (!field.required) {
+ label = document.createElement("label");
+ text = document.getElementById("optionalcolumn")
+ .getAttribute("labeltxt");
+ label.setAttribute("value", text);
+ row.appendChild(label);
+ }
+
+ row.setAttribute("align", "baseline");
+ sep.parentNode.insertBefore(row, sep);
+ joinChat._fields.push({field: field, textbox: textbox});
+ }
+
+ window.sizeToContent();
+ },
+
+ join: function jc_join() {
+ let values = joinChat._values;
+ for each (let field in joinChat._fields) {
+ let val = field.textbox.value.trim();
+ if (!val && field.field.required) {
+ field.textbox.focus();
+ //FIXME: why isn't the return false enough?
+ throw "Some required fields are empty!";
+ return false;
+ }
+ if (val)
+ values.setValue(field.field.identifier, val);
+ }
+ let account = joinChat._account;
+ account.joinChat(values);
+
+ let protoId = account.protocol.id;
+ if (protoId != "prpl-irc" && protoId != "prpl-jabber" &&
+ protoId != "prpl-gtalk")
+ return true;
+
+ let name;
+ if (protoId == "prpl-irc")
+ name = values.getValue("channel");
+ else
+ name = values.getValue("room") + "@" + values.getValue("server");
+
+ let conv = Services.conversations.getConversationByNameAndAccount(name,
+ account,
+ true);
+ if (conv)
+ Conversations.focusConversation(conv);
+
+ if (document.getElementById("autojoin").checked) {
+ if (protoId == "prpl-gtalk")
+ name += "/" + values.getValue("nick");
+ else if (protoId != "prpl-irc")
+ name += "/" + values.getValue("handle");
+
+ let prefBranch =
+ Services.prefs.getBranch("messenger.account." + account.id + ".");
+ let autojoin = [];
+ if (prefBranch.prefHasUserValue(autoJoinPref)) {
+ let prefValue =
+ prefBranch.getComplexValue(autoJoinPref, Ci.nsISupportsString).data;
+ if (prefValue)
+ autojoin = prefValue.split(",");
+ }
+
+ if (autojoin.indexOf(name) == -1) {
+ autojoin.push(name);
+ let str = Cc["@mozilla.org/supports-string;1"]
+ .createInstance(Ci.nsISupportsString);
+ str.data = autojoin.join(",");
+ prefBranch.setComplexValue(autoJoinPref, Ci.nsISupportsString, str);
+ }
+ }
+
+ return true;
+ },
+
+ getAccounts: function jc_getAccounts() getIter(Services.accounts.getAccounts())
+};
new file mode 100644
--- /dev/null
+++ b/im/content/joinchat.xul
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/menulist.css" type="text/css"?>
+
+<!DOCTYPE window SYSTEM "chrome://instantbird/locale/joinChat.dtd">
+
+<dialog
+ id = "joinChatDialog"
+ windowtype="Messenger:JoinChat"
+ title = "&joinChatWindow.title;"
+ buttons= "accept,cancel"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload = "joinChat.onload()"
+ ondialogaccept="joinChat.join()">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/joinchat.js"/>
+
+ <grid>
+ <columns>
+ <column/>
+ <column flex="1"/>
+ <column id="optionalcolumn" labeltxt="&optional.label;"/>
+ </columns>
+ <rows>
+ <row id="accountBox" align="center">
+ <label value="&account.label;" control="accountlist"/>
+ <menulist id="accountlist" onselect="joinChat.onAccountSelect();"/>
+ </row>
+ <row id="separatorRow1">
+ <separator class="thin"/>
+ </row>
+ <row id="nameBox" align="baseline">
+ <label value="&name.label;" control="name"/>
+ <textbox id="name"/>
+ </row>
+ <row id="separatorRow2">
+ <separator class="thin"/>
+ </row>
+ <row id="autojoinBox">
+ <spacer/>
+ <checkbox label="&autojoin.label;" accesskey="&autojoin.accesskey;" id="autojoin"/>
+ </row>
+ </rows>
+ </grid>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/content/jsConsoleOverlay.xul
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+
+<overlay id="jsConsoleOverlay"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<window id="JSConsoleWindow">
+
+#include menus.xul.inc
+
+</window>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/jsTreeView.js
@@ -0,0 +1,236 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * This file contains a prototype object designed to make the implementation of
+ * nsITreeViews in javascript simpler. This object requires that consumers
+ * override the _rebuild function. This function must set the _rowMap object to
+ * an array of objects fitting the following interface:
+ *
+ * readonly attribute string id - a unique identifier for the row/object
+ * readonly attribute integer level - the hierarchy level of the row
+ * attribute boolean open - whether or not this item's children are exposed
+ * string getText(aColName) - return the text to display for this row in the
+ * specified column
+ * void getProperties(aProps) - set the css-selectors on aProps when this is
+ * called
+ * attribute array children - return an array of child-objects also meeting this
+ * interface
+ */
+
+function PROTO_TREE_VIEW() {
+ this._tree = null;
+ this._rowMap = [];
+ this._persistOpenMap = [];
+}
+
+PROTO_TREE_VIEW.prototype = {
+ get rowCount() {
+ return this._rowMap.length;
+ },
+
+ /**
+ * CSS files will cue off of these. Note that we reach into the rowMap's
+ * items so that custom data-displays can define their own properties
+ */
+ getCellProperties: function jstv_getCellProperties(aRow, aCol, aProps) {
+ this._rowMap[aRow].getProperties(aProps, aCol);
+ },
+
+ /**
+ * The actual text to display in the tree
+ */
+ getCellText: function jstv_getCellText(aRow, aCol) {
+ return this._rowMap[aRow].getText(aCol.id);
+ },
+
+ /**
+ * The jstv items take care of assigning this when building children lists
+ */
+ getLevel: function jstv_getLevel(aIndex) {
+ return this._rowMap[aIndex].level;
+ },
+
+ /**
+ * This is easy since the jstv items assigned the _parent property when making
+ * the child lists
+ */
+ getParentIndex: function jstv_getParentIndex(aIndex) {
+ return this._rowMap.indexOf(this._rowMap[aIndex]._parent);
+ },
+
+ /**
+ * This is duplicative for our normal jstv views, but custom data-displays may
+ * want to do something special here
+ */
+ getRowProperties: function jstv_getRowProperties(aIndex, aProps) {
+ this._rowMap[aIndex].getProperties(aProps);
+ },
+
+ /**
+ * If an item in our list has the same level and parent as us, it's a sibling
+ */
+ hasNextSibling: function jstv_hasNextSibling(aIndex, aNextIndex) {
+ let targetLevel = this._rowMap[aIndex].level;
+ for (let i = aNextIndex + 1; i < this._rowMap.length; i++) {
+ if (this._rowMap[i].level == targetLevel)
+ return true;
+ if (this._rowMap[i].level < targetLevel)
+ return false;
+ }
+ return false;
+ },
+
+ /**
+ * If we have a child-list with at least one element, we are a container.
+ */
+ isContainer: function jstv_isContainer(aIndex) {
+ return this._rowMap[aIndex].children.length > 0;
+ },
+
+ isContainerEmpty: function jstv_isContainerEmpty(aIndex) {
+ // If the container has no children, the container is empty.
+ return !this._rowMap[aIndex].children.length;
+ },
+
+ /**
+ * Just look at the jstv item here
+ */
+ isContainerOpen: function jstv_isContainerOpen(aIndex) {
+ return this._rowMap[aIndex].open;
+ },
+
+ isEditable: function jstv_isEditable(aRow, aCol) {
+ // We don't support editing rows in the tree yet.
+ return false;
+ },
+
+ isSeparator: function jstv_isSeparator(aIndex) {
+ // There are no separators in our trees
+ return false;
+ },
+
+ isSorted: function jstv_isSorted() {
+ // We do our own customized sorting
+ return false;
+ },
+
+ setTree: function jstv_setTree(aTree) {
+ this._tree = aTree;
+ },
+
+ recursivelyAddToMap: function jstv_recursivelyAddToMap(aChild, aNewIndex) {
+ // When we add sub-children, we're going to need to increase our index
+ // for the next add item at our own level.
+ let currentCount = this._rowMap.length;
+ if (aChild.children.length && aChild.open) {
+ for (let [i, child] in Iterator(this._rowMap[aNewIndex].children)) {
+ let index = aNewIndex + i + 1;
+ this._rowMap.splice(index, 0, child);
+ aNewIndex += this.recursivelyAddToMap(child, index);
+ }
+ }
+ return this._rowMap.length - currentCount;
+ },
+
+ /**
+ * Opens or closes a container with children. The logic here is a bit hairy, so
+ * be very careful about changing anything.
+ */
+ toggleOpenState: function jstv_toggleOpenState(aIndex) {
+
+ // Ok, this is a bit tricky.
+ this._rowMap[aIndex]._open = !this._rowMap[aIndex].open;
+
+ if (!this._rowMap[aIndex].open) {
+ // We're closing the current container. Remove the children
+
+ // Note that we can't simply splice out children.length, because some of
+ // them might have children too. Find out how many items we're actually
+ // going to splice
+ let level = this._rowMap[aIndex].level;
+ let row = aIndex + 1;
+ while (row < this._rowMap.length && this._rowMap[row].level > level) {
+ row++;
+ }
+ let count = row - aIndex - 1;
+ this._rowMap.splice(aIndex + 1, count);
+
+ // Remove us from the persist map
+ let index = this._persistOpenMap.indexOf(this._rowMap[aIndex].id);
+ if (index != -1)
+ this._persistOpenMap.splice(index, 1);
+
+ // Notify the tree of changes
+ if (this._tree) {
+ this._tree.rowCountChanged(aIndex + 1, -count);
+ }
+ } else {
+ // We're opening the container. Add the children to our map
+
+ // Note that these children may have been open when we were last closed,
+ // and if they are, we also have to add those grandchildren to the map
+ let oldCount = this._rowMap.length;
+ this.recursivelyAddToMap(this._rowMap[aIndex], aIndex);
+
+ // Add this container to the persist map
+ let id = this._rowMap[aIndex].id;
+ if (this._persistOpenMap.indexOf(id) == -1)
+ this._persistOpenMap.push(id);
+
+ // Notify the tree of changes
+ if (this._tree)
+ this._tree.rowCountChanged(aIndex + 1, this._rowMap.length - oldCount);
+ }
+
+ // Invalidate the toggled row, so that the open/closed marker changes
+ if (this._tree)
+ this._tree.invalidateRow(aIndex);
+ },
+
+ // We don't implement any of these at the moment
+ canDrop: function jstv_canDrop(aIndex, aOrientation) {},
+ drop: function jstv_drop(aRow, aOrientation) {},
+ performAction: function jstv_performAction(aAction) {},
+ performActionOnCell: function jstv_performActionOnCell(aAction, aRow, aCol) {},
+ performActionOnRow: function jstv_performActionOnRow(aAction, aRow) {},
+ selectionChanged: function jstv_selectionChanged() {},
+ setCellText: function jstv_setCellText(aRow, aCol, aValue) {},
+ setCellValue: function jstv_setCellValue(aRow, aCol, aValue) {},
+ getCellValue: function jstv_getCellValue(aRow, aCol) {},
+ getColumnProperties: function jstv_getColumnProperties(aCol, aProps) {},
+ getImageSrc: function jstv_getImageSrc(aRow, aCol) {},
+ getProgressMode: function jstv_getProgressMode(aRow, aCol) {},
+ cycleCell: function jstv_cycleCell(aRow, aCol) {},
+ cycleHeader: function jstv_cycleHeader(aCol) {},
+
+ _tree: null,
+
+ /**
+ * An array of jstv items, where each item corresponds to a row in the tree
+ */
+ _rowMap: null,
+
+ /**
+ * This is a javascript map of which containers we had open, so that we can
+ * persist their state over-time. It is designed to be used as a JSON object.
+ */
+ _persistOpenMap: null,
+
+ _restoreOpenStates: function jstv__restoreOpenStates() {
+ // Note that as we iterate through here, .length may grow
+ for (let i = 0; i < this._rowMap.length; i++) {
+ if (this._persistOpenMap.indexOf(this._rowMap[i].id) != -1)
+ this.toggleOpenState(i);
+ }
+ },
+
+ QueryInterface: function QueryInterface(aIID) {
+ if (aIID.equals(Components.interfaces.nsITreeView) ||
+ aIID.equals(Components.interfaces.nsISupports))
+ return this;
+
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/macgestures.js
@@ -0,0 +1,218 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// Shamelessly taken from the implementation in browser/base/content/browser.js
+
+let gGestureSupport = {
+ _tabs: null,
+ _lastSelectedTab: null,
+
+ load: function GS_load() {
+ gGestureSupport.init(true);
+
+ let conversations = document.getElementById("conversations");
+ if (conversations) {
+ let tabs = conversations.tabContainer;
+ let selectHandler = function() {
+ gGestureSupport._lastSelectedTab = gGestureSupport._selectedTab;
+ gGestureSupport._selectedTab = this.selectedItem;
+ };
+ tabs.addEventListener("select", selectHandler);
+ gGestureSupport._selectedTab = tabs.selectedItem;
+ gGestureSupport._tabs = tabs;
+ }
+ },
+
+ /**
+ * Add or remove mouse gesture event listeners
+ *
+ * @param aAddListener
+ * True to add/init listeners and false to remove/uninit
+ */
+ init: function GS_init(aAddListener) {
+ const gestureEvents = ["SwipeGesture",
+ "MagnifyGestureStart", "MagnifyGestureUpdate", "MagnifyGesture",
+ "RotateGestureStart", "RotateGestureUpdate", "RotateGesture"];
+
+ let addRemove = aAddListener ? window.addEventListener :
+ window.removeEventListener;
+
+ for each (let event in gestureEvents)
+ addRemove("Moz" + event, this, true);
+ },
+
+ /**
+ * Dispatch events based on the type of mouse gesture event. For now, make
+ * sure to stop propagation of every gesture event so that web content cannot
+ * receive gesture events.
+ *
+ * @param aEvent
+ * The gesture event to handle
+ */
+ handleEvent: function GS_handleEvent(aEvent) {
+ aEvent.stopPropagation();
+
+ // Create a preference object with some defaults
+ let def = function(aThreshold, aLatched)
+ ({ threshold: aThreshold, latched: !!aLatched });
+
+ switch (aEvent.type) {
+ case "MozSwipeGesture":
+ this.onSwipe(aEvent);
+ break;
+ case "MozMagnifyGestureStart":
+ this._setupGesture(aEvent, "pinch", def(150, 1), "out", "in");
+ break;
+ case "MozRotateGestureStart":
+ this._setupGesture(aEvent, "twist", def(25, 0), "right", "left");
+ break;
+ case "MozMagnifyGestureUpdate":
+ case "MozRotateGestureUpdate":
+ this._doUpdate(aEvent);
+ break;
+ }
+ },
+
+ /**
+ * Called at the start of "pinch" and "twist" gestures to setup all of the
+ * information needed to process the gesture
+ *
+ * @param aEvent
+ * The continual motion start event to handle
+ * @param aGesture
+ * Name of the gesture to handle
+ * @param aPref
+ * Preference object with the names of preferences and defaults
+ * @param aInc
+ * Command to trigger for increasing motion (without gesture name)
+ * @param aDec
+ * Command to trigger for decreasing motion (without gesture name)
+ */
+ _setupGesture: function GS__setupGesture(aEvent, aGesture, aPref, aInc, aDec) {
+ // Keep track of the total deltas and latching behavior
+ let offset = 0;
+ let latchDir = aEvent.delta > 0 ? 1 : -1;
+ let isLatched = false;
+
+ // Create the update function here to capture closure state
+ this._doUpdate = function GS__doUpdate(aEvent) {
+ // Update the offset with new event data
+ offset += aEvent.delta;
+
+ // Check if the cumulative deltas exceed the threshold
+ if (Math.abs(offset) > aPref["threshold"]) {
+ // Trigger the action if we don't care about latching; otherwise, make
+ // sure either we're not latched and going the same direction of the
+ // initial motion; or we're latched and going the opposite way
+ let sameDir = (latchDir ^ offset) >= 0;
+ if (!aPref["latched"] || (isLatched ^ sameDir)) {
+ this._doAction(aEvent, [aGesture, offset > 0 ? aInc : aDec]);
+
+ // We must be getting latched or leaving it, so just toggle
+ isLatched = !isLatched;
+ }
+
+ // Reset motion counter to prepare for more of the same gesture
+ offset = 0;
+ }
+ };
+
+ // The start event also contains deltas, so handle an update right away
+ this._doUpdate(aEvent);
+ },
+
+ /**
+ * Determine what action to do for the gesture based on which keys are
+ * pressed and which commands are set
+ *
+ * @param aEvent
+ * The original gesture event to convert into a fake click event
+ * @param aGesture
+ * Array of gesture name parts (to be joined by periods)
+ * @return Name of the command found for the event's keys and gesture. If no
+ * command is found, no value is returned (undefined).
+ */
+ _doAction: function GS__doAction(aEvent, aGesture) {
+ let gesture = aGesture.join("-");
+ switch (gesture) {
+ case "pinch-out":
+ document.getElementById("cmd_textZoomEnlarge").doCommand();
+ break;
+ case "pinch-in":
+ document.getElementById("cmd_textZoomReduce").doCommand();
+ break;
+ case "twist-left":
+ if (this._tabs)
+ this._tabs.selectedIndex--;
+ break;
+ case "twist-right":
+ if (this._tabs)
+ this._tabs.selectedIndex++;
+ break;
+ case "swipe-down":
+ // This gesture isn't available if there's no browser.
+ if (!getBrowser())
+ break;
+ if (aEvent.originalTarget.ownerDocument == getBrowser().contentDocument)
+ getBrowser().contentWindow.focus();
+ if ("scrollToNextSection" in getBrowser())
+ getBrowser().scrollToNextSection();
+ else
+ goDoCommand("cmd_scrollBottom");
+ break;
+ case "swipe-up":
+ // This gesture isn't available if there's no browser.
+ if (!getBrowser())
+ break;
+ if (aEvent.originalTarget.ownerDocument == getBrowser().contentDocument)
+ getBrowser().contentWindow.focus();
+ if ("scrollToPreviousSection" in getBrowser())
+ getBrowser().scrollToPreviousSection();
+ else
+ goDoCommand("cmd_scrollTop");
+ break;
+ case "swipe-left":
+ case "swipe-right":
+ var newIndex = -1;
+ if (this._lastSelectedTab)
+ newIndex = this._tabs.getIndexOfItem(this._lastSelectedTab);
+ if (newIndex == -1)
+ newIndex =
+ gesture == "swipe-right" ? this._tabs.childNodes.length - 1 : 0;
+ this._tabs.selectedIndex = newIndex;
+ break;
+ default:
+ dump("mac gesture: "+ gesture +"\n");
+ }
+ },
+
+ /**
+ * Convert continual motion events into an action if it exceeds a threshold
+ * in a given direction. This function will be set by _setupGesture to
+ * capture state that needs to be shared across multiple gesture updates.
+ *
+ * @param aEvent
+ * The continual motion update event to handle
+ */
+ _doUpdate: function(aEvent) {},
+
+ /**
+ * Convert the swipe gesture into a browser action based on the direction
+ *
+ * @param aEvent
+ * The swipe event to handle
+ */
+ onSwipe: function GS_onSwipe(aEvent) {
+ // Figure out which one (and only one) direction was triggered
+ for each (let dir in ["UP", "RIGHT", "DOWN", "LEFT"]) {
+ if (aEvent.direction == aEvent["DIRECTION_" + dir]) {
+ this._doAction(aEvent, ["swipe", dir.toLowerCase()]);
+ return;
+ }
+ }
+ }
+};
+
+this.addEventListener("load", gGestureSupport.load);
new file mode 100644
--- /dev/null
+++ b/im/content/menus-mac.xul
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+]>
+<overlay id="menusOverlayMac"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <commandset id="maincommandset">
+ <command id="cmd_contacts"
+ oncommand="if (window.location.href == 'chrome://instantbird/content/blist.xul')
+ window.close();
+ else
+ Core.showContacts();"/>
+ </commandset>
+
+ <keyset id="mainkeyset">
+ <key id="contactskey" command="cmd_contacts"
+ key="&contacts.commandkey;" modifiers="accel,shift"/>
+ </keyset>
+
+ <!-- adds the onpopupshowing attributes -->
+ <menupopup id="setStatusMenupopup"
+ onpopupshowing="menus.onStatusPopupShowing();"/>
+ <menupopup id="toolsMenuPopup"
+ onpopupshowing="menus.displayUpdateStatus();"/>
+
+ <menuitem id="menu_FileQuitItem"
+ label="&quitApplicationCmdMac.label;"
+ key="key_quitApplication"/>
+
+ <!-- bottom of help menu; note that updatesMenuItem and updatesSep are
+ - moved into the tools menu, so these have to come first
+ -->
+ <menupopup id="helpMenuPopup" onpopupshowing=""/>
+ <menuitem id="updatesMenuItem" removeelement="true"/>
+ <menuseparator id="updatesSep" removeelement="true"/>
+
+ <!-- bottom of the tools menu -->
+ <menuseparator id="prefSep" removeelement="true"/>
+ <menuitem id="menu_preferences" removeelement="true"/>
+ <menupopup id="toolsMenuPopup">
+ <menuitem id="contactsMenuItem" insertbefore="addonsMenuItem"
+ label="&contacts.label;" accesskey="&contacts.accesskey;"
+ command="cmd_contacts" key="contactskey"/>
+ <menuseparator id="updatesSep"/>
+ <menuitem id="updatesMenuItem"
+ label="&checkForUpdates;"
+ oncommand="menus.updates()"/>
+ </menupopup>
+
+ <menu id="helpMenu" hidden="true"/>
+
+ <popupset id="mainpopupset">
+ <!-- nsMenuBarX hides these and uses them to build the Application menu. -->
+ <menupopup id="menu_ToolsPopup">
+ <menuitem id="menu_preferences"
+ label="&preferencesCmdMac.label;"
+ key="key_preferencesCmdMac"
+ oncommand="menus.preferences();"/>
+ <menuitem id="menu_mac_services"
+ label="&servicesMenuMac.label;"/>
+ <menuitem id="menu_mac_hide_app"
+ label="&hideThisAppCmdMac.label;"
+ key="key_hideThisAppCmdMac"/>
+ <menuitem id="menu_mac_hide_others"
+ label="&hideOtherAppsCmdMac.label;"
+ key="key_hideOtherAppsCmdMac"/>
+ <menuitem id="menu_mac_show_all"
+ label="&showAllAppsCmdMac.label;"/>
+ </menupopup>
+ </popupset>
+
+ <!-- These are used to build the Application menu under Cocoa widgets -->
+ <keyset id="mainkeyset">
+ <key id="key_preferencesCmdMac"
+ key="&preferencesCmdMac.commandkey;"
+ modifiers="accel"/>
+ <key id="key_hideThisAppCmdMac"
+ key="&hideThisAppCmdMac.commandkey;"
+ modifiers="accel"/>
+ <key id="key_hideOtherAppsCmdMac"
+ key="&hideOtherAppsCmdMac.commandkey;"
+ modifiers="accel,alt"/>
+ </keyset>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/menus-unix.xul
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+]>
+<overlay id="menusOverlayUnix"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <menuitem id="menu_FileQuitItem"
+ accesskey="&quitApplicationCmd.accesskey;"
+ key="key_quitApplication"/>
+
+ <menuitem id="menu_preferences"
+ label="&preferencesCmdUnix.label;"
+ accesskey="&preferencesCmdUnix.accesskey;"/>
+
+</overlay>
+
new file mode 100644
--- /dev/null
+++ b/im/content/menus-win.xul
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+]>
+<overlay id="menusOverlayWin"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <key id="key_quitApplication" removeelement="true"/>
+
+ <menuitem id="menu_FileQuitItem"
+ label="&quitApplicationCmdWin.label;"
+ accesskey="&quitApplicationCmdWin.accesskey;"/>
+
+ <menu id="helpMenu" label="&helpWin.menu;" accesskey="&helpWin.accesskey;"/>
+
+</overlay>
+
new file mode 100644
--- /dev/null
+++ b/im/content/menus.js
@@ -0,0 +1,189 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const addBuddyWindow = "chrome://instantbird/content/addbuddy.xul";
+const joinChatWindow = "chrome://instantbird/content/joinchat.xul";
+const aboutWindow = "chrome://instantbird/content/aboutDialog.xul";
+const errorConsoleWindow = "chrome://global/content/console.xul";
+const preferencesWindow = "chrome://instantbird/content/preferences/preferences.xul";
+
+if (!("Services" in window))
+ Components.utils.import("resource:///modules/imServices.jsm");
+if (!("Core" in window))
+ Components.utils.import("resource:///modules/ibCore.jsm");
+
+var menus = {
+ supportsCommand: function(aCmd)
+ aCmd == "cmd_addbuddy" || aCmd == "cmd_joinchat" || aCmd == "cmd_newtab",
+ isCommandEnabled: function(aCmd) {
+ let enumerator = Services.accounts.getAccounts();
+ while (enumerator.hasMoreElements()) {
+ let acc = enumerator.getNext();
+ if (acc.connected &&
+ (aCmd == "cmd_addbuddy" || aCmd == "cmd_newtab" || acc.canJoinChat))
+ return true;
+ }
+ return false;
+ },
+ doCommand: function(aCmd) {
+ if (aCmd == "cmd_joinchat")
+ this.joinChat();
+ else if (aCmd == "cmd_addbuddy")
+ this.addBuddy();
+ else if (aCmd == "cmd_newtab") {
+ if (!("Conversations" in window))
+ Components.utils.import("resource:///modules/imWindows.jsm");
+ Conversations.showNewTab();
+ }
+ },
+ onEvent: function(aEventName) {},
+
+ about: function menu_about() {
+ Core.showWindow("Messenger:About", aboutWindow, "About",
+ "chrome,resizable=no,minimizable=no,centerscreen");
+ },
+
+ accounts: function menu_accounts() {
+ Core.showAccounts();
+ },
+
+ preferences: function menu_preferences() {
+ Core.showPreferences();
+ },
+
+ addons: function menu_addons() {
+ Core.showAddons();
+ },
+
+ errors: function debug_errors() {
+ Core.showWindow("global:console", errorConsoleWindow, "Errors",
+ "chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar");
+ },
+
+ updates: function menu_updates() {
+ Core.showUpdates();
+ },
+
+ displayUpdateStatus: function menu_displayUpdateStatus() {
+ // copied from buildHelpMenu in mozilla/browser/base/content/utilityOverlay.js
+ var updates =
+ Components.classes["@mozilla.org/updates/update-service;1"]
+ .getService(Components.interfaces.nsIApplicationUpdateService);
+ var um =
+ Components.classes["@mozilla.org/updates/update-manager;1"]
+ .getService(Components.interfaces.nsIUpdateManager);
+
+ // Disable the UI if the update enabled pref has been locked by the
+ // administrator or if we cannot update for some other reason
+ var checkForUpdates = document.getElementById("updatesMenuItem");
+ var canCheckForUpdates = updates.canCheckForUpdates;
+ checkForUpdates.setAttribute("disabled", !canCheckForUpdates);
+ if (!canCheckForUpdates)
+ return;
+
+ var strings =
+ Services.strings
+ .createBundle("chrome://instantbird/locale/updates.properties");
+ var activeUpdate = um.activeUpdate;
+
+ // If there's an active update, substitute its name into the label
+ // we show for this item, otherwise display a generic label.
+ function getStringWithUpdateName(key) {
+ if (activeUpdate && activeUpdate.name)
+ return strings.formatStringFromName(key, [activeUpdate.name], 1);
+ return strings.GetStringFromName(key + "Fallback");
+ }
+
+ // By default, show "Check for Updates..."
+ var key = "default";
+ if (activeUpdate) {
+ switch (activeUpdate.state) {
+ case "downloading":
+ // If we're downloading an update at present, show the text:
+ // "Downloading Instantbird x.x..." otherwise we're paused, and show
+ // "Resume Downloading Instantbird x.x..."
+ key = updates.isDownloading ? "downloading" : "resume";
+ break;
+ case "pending":
+ // If we're waiting for the user to restart, show: "Apply Downloaded
+ // Updates Now..."
+ key = "pending";
+ break;
+ }
+ }
+ checkForUpdates.label = getStringWithUpdateName("updatesItem_" + key);
+ checkForUpdates.accessKey =
+ strings.GetStringFromName("updatesItem_" + key + ".accesskey");
+ if (um.activeUpdate && updates.isDownloading)
+ checkForUpdates.setAttribute("loading", "true");
+ else
+ checkForUpdates.removeAttribute("loading");
+ },
+
+ updateFileMenuitems: function menu_updateFileMenuitems() {
+ goUpdateCommand("cmd_joinchat");
+ goUpdateCommand("cmd_addbuddy");
+ goUpdateCommand("cmd_newtab");
+ },
+
+ openDialog: function menu_openDialog(aWindowType, aURL) {
+ let features = "chrome,modal,titlebar,centerscreen";
+#ifdef XP_MACOSX
+ let hiddenWindowUrl =
+ Services.prefs.getCharPref("browser.hiddenWindowChromeURL");
+ if (window.location.href == hiddenWindowUrl) {
+ Core.showWindow(aWindowType, aURL, "", features);
+ return;
+ }
+#endif
+ window.openDialog(aURL, "", features);
+ },
+ addBuddy: function menu_addBuddy() {
+ this.openDialog("Messenger:Addbuddy", addBuddyWindow);
+ },
+
+ joinChat: function menu_joinChat() {
+ this.openDialog("Messenger:JoinChat", joinChatWindow);
+ },
+
+ checkCurrentStatusType: function menu_checkCurrentStatusType(aItems) {
+ if (!("Status" in window))
+ Components.utils.import("resource:///modules/imStatusUtils.jsm");
+ let status = Status.toAttribute(Services.core.globalUserStatus.statusType);
+ if (status == "away")
+ status = "unavailable";
+
+ aItems.forEach(function (aId) {
+ let elt = document.getElementById(aId);
+ if (elt.getAttribute("status") == status)
+ elt.setAttribute("checked", "true");
+ else
+ elt.removeAttribute("checked");
+ });
+ },
+
+ onStatusPopupShowing: function menu_onStatusPopupShowing() {
+ this.checkCurrentStatusType(["statusAvailable",
+ "statusUnavailable",
+ "statusOffline"]);
+ },
+
+ setStatus: function menu_setStatus(aEvent) {
+ let status = aEvent.originalTarget.getAttribute("status");
+ if (!status)
+ return; // is this really possible?
+
+ let blist = Services.wm.getMostRecentWindow("Messenger:blist");
+ if (blist) {
+ blist.focus();
+ blist.buddyList.startEditStatus(status);
+ }
+ else {
+ let us = Services.core.globalUserStatus;
+ us.setStatus(Status.toFlag(status), us.statusText);
+ }
+ }
+};
+
+window.addEventListener("load", function() { this.controllers.insertControllerAt(0, menus); });
new file mode 100644
--- /dev/null
+++ b/im/content/menus.xul
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<?xml-stylesheet href="chrome://instantbird/skin/menus.css" type="text/css"?>
+#ifdef XP_WIN
+<?xul-overlay href="chrome://instantbird/content/menus-win.xul"?>
+#elifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus-mac.xul"?>
+#else
+<?xul-overlay href="chrome://instantbird/content/menus-unix.xul"?>
+#endif
+
+<!DOCTYPE overlay [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+]>
+<overlay id="menusOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/menus.js"/>
+
+ <commandset id="maincommandset">
+ <command id="accountmanager" oncommand="menus.accounts()"/>
+ <command id="cmd_quitApplication" oncommand="goQuitApplication()"/>
+ <command id="cmd_joinchat" oncommand="goDoCommand('cmd_joinchat');"/>
+ <command id="cmd_addbuddy" oncommand="goDoCommand('cmd_addbuddy');"/>
+ <command id="cmd_newtab" oncommand="goDoCommand('cmd_newtab');"/>
+ <command id="cmd_addons" oncommand="menus.addons()"/>
+ </commandset>
+
+ <keyset id="mainkeyset">
+ <key id="accountsetup" key="&account.commandkey;" command="accountmanager" modifiers="accel,shift"/>
+ <key id="errorConsoleKey" key="&errorConsoleCmd.commandkey;" oncommand="menus.errors();" modifiers="accel,shift"/>
+ <key id="key_quitApplication" key="&quitApplicationCmdMac.key;" command="cmd_quitApplication" modifiers="accel"/>
+ <key id="joinChatkey" key="&joinChat.commandkey;" command="cmd_joinchat" modifiers="accel"/>
+ <key id="addBuddykey" key="&addContact.commandkey;" command="cmd_addbuddy" modifiers="accel"/>
+ <key id="newtabkey" key="&newtab.commandkey;" command="cmd_newtab" modifiers="accel"/>
+ <key id="addonskey" key="&addonManager.commandkey;" command="cmd_addons" modifiers="accel"/>
+ </keyset>
+
+ <menubar id="blistMenubar">
+ <menu label="&file.menu;" id="fileMenu" accesskey="&file.accesskey;">
+ <menupopup id="fileMenuPopup" onpopupshowing="menus.updateFileMenuitems();">
+ <menuitem id="addBuddyMenuItem" label="&addContact;" command="cmd_addbuddy" key="addBuddykey" accesskey="&addContact.accesskey;"/>
+ <menuitem id="newTabMenuItem" label="&newtab;" command="cmd_newtab" key="newtabkey" accesskey="&newtab.accesskey;"/>
+ <menuitem id="joinChatMenuItem" label="&joinChat;" command="cmd_joinchat" key="joinChatkey" accesskey="&joinChat.accesskey;"/>
+ <menuseparator/>
+ <menu id="setStatusTo" label="&setStatusTo;" oncommand="menus.setStatus(event);" accesskey="&setStatusTo.accesskey;" >
+ <menupopup id="setStatusMenupopup"> <!-- has onpopupshowing on mac -->
+ <menuitem id="statusAvailable" status="available" label="&available;" accesskey="&available.accesskey;" class="menuitem-iconic"/>
+ <menuitem id="statusUnavailable" status="unavailable" label="&unavailable;" accesskey="&unavailable.accesskey;" class="menuitem-iconic"/>
+ <menuseparator id="statusOfflineSeparator"/>
+ <menuitem id="statusOffline" status="offline" label="&offline;" accesskey="&offline.accesskey;" class="menuitem-iconic"/>
+ </menupopup>
+ </menu>
+ <menuseparator id="menu_FileQuitSeparator"/>
+ <!-- menu_FileQuitItem modified on all three platforms via overlays -->
+ <menuitem id="menu_FileQuitItem"
+ label="&quitApplicationCmd.label;"
+ command="cmd_quitApplication"/>
+ </menupopup>
+ </menu>
+ <menu label="&tools.menu;" id="toolsMenu" accesskey="&tools.accesskey;">
+ <menupopup id="toolsMenuPopup"> <!-- has onpopupshowing on mac -->
+ <menuitem id="accountsMenuItem" label="&accountManager;" command="accountmanager" key="accountsetup" accesskey="&account.accesskey;"/>
+ <menuitem id="addonsMenuItem" label="&addonManager;" command="cmd_addons" key="addonskey" accesskey="&addonManager.accesskey;"/>
+ <menuseparator/>
+ <menuitem id="errorConsoleMenuItem" label="&errorConsoleCmd.label;" oncommand="menus.errors()" key="errorConsoleKey" accesskey="&errorConsoleCmd.accesskey;"/>
+ <menuseparator id="prefSep"/>
+ <menuitem id="menu_preferences"
+ label="&preferencesCmd.label;"
+ accesskey="&preferencesCmd.accesskey;"
+ oncommand="menus.preferences();"/>
+ </menupopup>
+ </menu>
+#ifdef XP_MACOSX
+ <!-- Mac window menu -->
+#include ../../mozilla/toolkit/content/macWindowMenu.inc
+#endif
+ <menu label="&help.menu;" id="helpMenu" accesskey="&help.accesskey;">
+#ifdef MOZ_UPDATER
+ <menupopup id="helpMenuPopup" onpopupshowing="menus.displayUpdateStatus();">
+ <menuitem id="updatesMenuItem" label="&checkForUpdates;" oncommand="menus.updates()"/>
+ <menuseparator id="updatesSep"/>
+#else
+ <menupopup id="helpMenuPopup">
+#endif
+ <menuitem id="aboutName" label="&about.menu;" accesskey="&about.accesskey;" oncommand="menus.about()"/>
+ </menupopup>
+ </menu>
+ </menubar>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/menus.xul.inc
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ <commandset id="maincommandset"/>
+ <keyset id="mainkeyset"/>
+ <menubar id="blistMenubar"/>
+ <popupset id="mainpopupset"/>
new file mode 100644
--- /dev/null
+++ b/im/content/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
--- /dev/null
+++ b/im/content/newtab.xml
@@ -0,0 +1,536 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings [
+ <!ENTITY % newtabDTD SYSTEM "chrome://instantbird/locale/newtab.dtd" >
+ %newtabDTD;
+]>
+
+<bindings id="newtabBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+ <binding id="newtab">
+ <resources>
+ <stylesheet src="chrome://instantbird/skin/newtab.css"/>
+ <stylesheet src="chrome://instantbird/skin/richlistbox.css"/>
+ </resources>
+
+ <content>
+ <xul:vbox flex="1">
+ <xul:toolbar class="newtab-toolbar">
+ <xul:textbox class="filterbox" anonid="filterbox" type="search"
+ placeholder="&filterbox.placeholder;" flex="1"/>
+ </xul:toolbar>
+ <xul:notificationbox anonid="newtab-notifications" flex="1">
+ <xul:richlistbox anonid="newtab-listbox" class="newtab-listbox" flex="1"/>
+ </xul:notificationbox>
+ </xul:vbox>
+ </content>
+
+ <implementation implements="nsIObserver">
+ <property name="statsService" readonly="true">
+ <getter>
+ <![CDATA[
+ if (!this._statsService) {
+ this._statsService = Components.classes["@instantbird.org/conv-stats-service;1"]
+ .getService(Components.interfaces.ibIConvStatsService);
+ }
+ return this._statsService;
+ ]]>
+ </getter>
+ </property>
+
+ <property name="filterbox" readonly="true">
+ <getter>
+ return document.getAnonymousElementByAttribute(this, "anonid", "filterbox");
+ </getter>
+ </property>
+
+ <property name="listbox" readonly="true">
+ <getter>
+ return document.getAnonymousElementByAttribute(this, "anonid", "newtab-listbox");
+ </getter>
+ </property>
+
+ <!-- Array version of this.listbox.childNodes. -->
+ <field name="listItems">[]</field>
+
+ <property name="tab">
+ <getter>
+ <![CDATA[
+ return this._tab;
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ this._tab = val;
+ this._tab.setAttribute("label",
+ Services.strings.createBundle("chrome://instantbird/locale/newtab.properties")
+ .GetStringFromName("newtab.label"));
+ ]]>
+ </setter>
+ </property>
+
+ <destructor>
+ <![CDATA[
+ this.destroy();
+ ]]>
+ </destructor>
+
+ <method name="focus">
+ <body>
+ <![CDATA[
+ this.filterbox.focus();
+ ]]>
+ </body>
+ </method>
+
+ <method name="onResize">
+ <body>
+ <![CDATA[
+ this.addMoreItems();
+ ]]>
+ </body>
+ </method>
+
+ <method name="onSelect">
+ <body>
+ <![CDATA[
+ this.refresh();
+ ]]>
+ </body>
+ </method>
+
+ <!-- Maintains computed number of items to display. Incremented when the user
+ scrolls near the bottom of the list if we have more conversations. -->
+ <field name="numberOfItemsToDisplay">0</field>
+ <property name="hasMoreConversations" readonly="true">
+ <getter>
+ <![CDATA[
+ return this.filteredConvs && this.filteredConvs.hasMoreElements();
+ ]]>
+ </getter>
+ </property>
+ <!-- While scrolling, we add more items when there are three items left that
+ aren't displayed (the last visible item is fourth from the end of the list). -->
+ <field name="kAddMoreItemsThreshold" readonly="true">3</field>
+ <!-- Try to add this many items when scrolling past the threshold. -->
+ <field name="kNumItemsIncrement" readonly="true">10</field>
+
+ <!-- Increments numberOfItemsToDisplay and calls refresh(). Used on scrolling/resizing. -->
+ <method name="addMoreItems">
+ <body>
+ <![CDATA[
+ if (!this.hasMoreConversations)
+ return;
+ let lastVisibleIndex = this.listbox.getIndexOfFirstVisibleRow() +
+ this.listbox.getNumberOfVisibleRows() - 1;
+ // Increment numberOfItemsToDisplay if lastVisibleIndex exceeds the threshold.
+ if (lastVisibleIndex >= this.listItems.length - this.kAddMoreItemsThreshold) {
+ let maxNumberOfItemsToDisplay =
+ this.numberOfItemsToDisplay + this.kNumItemsIncrement;
+ while (this.hasMoreConversations &&
+ this.listItems.length < maxNumberOfItemsToDisplay) {
+ this.pushListItem().build(this.getNextConv());
+ this.numberOfItemsToDisplay++;
+ }
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="getNextConv">
+ <body>
+ <![CDATA[
+ if (!this.hasMoreConversations)
+ return null;
+ return this.filteredConvs.getNext()
+ .QueryInterface(Components.interfaces.ibIPossibleConversation);
+ ]]>
+ </body>
+ </method>
+
+ <!-- Remove observers when closing tab. -->
+ <method name="destroy">
+ <body>
+ <![CDATA[
+ this.statsService.removeObserver(this);
+ this._destroyed = true;
+ ]]>
+ </body>
+ </method>
+
+ <method name="finishImport">
+ <parameter name="aOtherNewTab"/>
+ <body>
+ <![CDATA[
+ let filterbox = this.filterbox;
+ let otherFilterbox = aOtherNewTab.filterbox;
+ filterbox.value = otherFilterbox.value;
+ filterbox.selectionStart = otherFilterbox.selectionStart;
+ filterbox.selectionEnd = otherFilterbox.selectionEnd;
+ const kFieldsToImport = ["filteredConvs", "numberOfItemsToDisplay",
+ "_prevFilterTxt"];
+ for (let field of kFieldsToImport)
+ this[field] = aOtherNewTab[field];
+ for (let item of aOtherNewTab.listItems)
+ this.pushListItem().build(item.target);
+ this.listbox.selectedIndex = aOtherNewTab.listbox.selectedIndex;
+ this.listbox.scrollToIndex(aOtherNewTab.listbox.getIndexOfFirstVisibleRow());
+ this.addListeners();
+ ]]>
+ </body>
+ </method>
+
+ <!-- This is separated from the constructor because we don't want to init
+ when being imported from another window. -->
+ <method name="init">
+ <body>
+ <![CDATA[
+ this._forceRefresh = true;
+ this.refresh();
+ this.addListeners();
+ ]]>
+ </body>
+ </method>
+
+ <method name="addListeners">
+ <body>
+ <![CDATA[
+ this.filterbox.addEventListener("keypress", this.refresh.bind(this));
+ this.listbox.addEventListener("focus", function(aEvent) {
+ let listbox = this.listbox;
+ if (listbox.selectedIndex == -1)
+ listbox.selectedIndex = listbox.getIndexOfFirstVisibleRow();
+ }.bind(this));
+ this.listbox.addEventListener("scroll", this.addMoreItems.bind(this));
+ this.statsService.addObserver(this);
+ ]]>
+ </body>
+ </method>
+
+ <!-- Dispatch a call to _delayedRefresh, to avoid multiple consecutive calls. -->
+ <method name="refresh">
+ <body>
+ <![CDATA[
+ if (this._pendingRefreshCall)
+ return;
+ this._pendingRefreshCall = true;
+ Services.tm.mainThread.dispatch(this._delayedRefresh.bind(this),
+ Components.interfaces.nsIEventTarget.DISPATCH_NORMAL);
+ ]]>
+ </body>
+ </method>
+
+ <field name="_prevFilterTxt">null</field>
+ <method name="_delayedRefresh">
+ <body>
+ <![CDATA[
+ this._pendingRefreshCall = false;
+ // Don't do anything if the tab has been removed.
+ if (this._destroyed)
+ return;
+ let filterTxt = this.filterbox.value.toLowerCase();
+ if (filterTxt == this._prevFilterTxt && !this._forceRefresh)
+ return;
+ this.filteredConvs = this.statsService.getFilteredConvs(filterTxt);
+ if (filterTxt != this._prevFilterTxt ||
+ (!this.numberOfItemsToDisplay && this.hasMoreConversations)) {
+ this.resetItemsToDisplay();
+ this._prevFilterTxt = filterTxt;
+ }
+ let filteredConvs = this.filteredConvs;
+ let i;
+ for (i = 0; i < this.numberOfItemsToDisplay && this.hasMoreConversations; ++i) {
+ if (i == this.listItems.length)
+ this.pushListItem();
+ this.listItems[i].build(this.getNextConv());
+ }
+ // Remove excess items.
+ while (this.listItems.length > i)
+ this.popListItem();
+ ]]>
+ </body>
+ </method>
+
+ <method name="resetItemsToDisplay">
+ <body>
+ <![CDATA[
+ let listbox = this.listbox;
+ // We need to have a list item so that we can use its height to compute
+ // the number of items to display. If we don't have one, we add it,
+ // but only if it will be used (i.e. this.hasMoreConversations is true).
+ if (this.hasMoreConversations) {
+ if (!listbox.firstChild)
+ this.pushListItem();
+ // Add enough items to fill the visible area, plus kNumItemsIncrement.
+ this.numberOfItemsToDisplay =
+ (listbox.clientHeight / listbox.firstChild.clientHeight) + this.kNumItemsIncrement;
+ }
+ else
+ this.numberOfItemsToDisplay = 0;
+ listbox.scrollToIndex(0);
+ listbox.clearSelection();
+ // Ensure the first item will be selected if the user presses
+ // down (for example) from the filterbox.
+ listbox.selectedIndex = -1;
+ ]]>
+ </body>
+ </method>
+
+ <method name="pushListItem">
+ <body>
+ <![CDATA[
+ // We use richlistitem as the nodeName so that CSS rules from richlistbox.css
+ // get applied. We use the className to apply the -moz-binding.
+ let elt = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "richlistitem");
+ elt.className = "newtab-item";
+ this.listbox.appendChild(elt);
+ this.listItems.push(elt);
+ return elt;
+ ]]>
+ </body>
+ </method>
+
+ <method name="popListItem">
+ <body>
+ <![CDATA[
+ this.listbox.removeChild(this.listbox.lastChild);
+ this.listItems.pop();
+ ]]>
+ </body>
+ </method>
+
+ <method name="startConversation">
+ <parameter name="aNewtabItem"/>
+ <body>
+ <![CDATA[
+ let conv = aNewtabItem.target.createConversation();
+ if (conv)
+ Conversations.focusConversation(conv);
+ ]]>
+ </body>
+ </method>
+
+ <!-- nsIObserver implementation -->
+ <method name="observe">
+ <parameter name="aSubject"/>
+ <parameter name="aTopic"/>
+ <parameter name="aData"/>
+ <body>
+ <![CDATA[
+ if (aTopic == "stats-service-log-sweeping") {
+ let nb = document.getAnonymousElementByAttribute(this, "anonid",
+ "newtab-notifications");
+ let notification = nb.getNotificationWithValue("log-sweeping");
+ if (aData == "ongoing" && !notification) {
+ let notificationText =
+ Services.strings.createBundle("chrome://instantbird/locale/newtab.properties")
+ .GetStringFromName("newtab.logSweepingInProgress");
+ nb.appendNotification(notificationText, "log-sweeping", "",
+ nb.PRIORITY_WARNING_MEDIUM, []);
+ return;
+ }
+ else if (aData == "done" && notification)
+ nb.removeNotification(notification);
+ }
+ this._forceRefresh = true;
+ this.refresh();
+ ]]>
+ </body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="keydown">
+ <![CDATA[
+ if (event.keyCode == event.DOM_VK_ENTER ||
+ event.keyCode == event.DOM_VK_RETURN) {
+ if (!this.listbox.firstChild)
+ return;
+ let item = this.listbox.selectedItem || this.listbox.firstChild;
+ this.startConversation(item);
+ window.getTabBrowser().removeTab(this.tab);
+ return;
+ }
+
+ // Don't handle the tab key.
+ if (event.keyCode == event.DOM_VK_TAB)
+ return;
+
+ if (event.keyCode == event.DOM_VK_ESCAPE && !this.filterbox.value) {
+ window.getTabBrowser().removeTab(this.tab);
+ return;
+ }
+
+ // If the key is a modifier, don't do anything.
+ if (event.altKey || event.metaKey || event.shiftKey || event.ctrlKey)
+ return;
+
+ const navKeyCodes = [KeyEvent.DOM_VK_PAGE_UP, KeyEvent.DOM_VK_PAGE_DOWN,
+ KeyEvent.DOM_VK_HOME, KeyEvent.DOM_VK_END,
+ KeyEvent.DOM_VK_UP, KeyEvent.DOM_VK_DOWN];
+
+ // If it's not a navigation key, make sure filterbox has focus and return.
+ if (navKeyCodes.indexOf(event.keyCode) == -1) {
+ this.filterbox.focus();
+ return;
+ }
+ // If the key was Home or End and the filterbox wasn't empty, simply
+ // return so that filterbox can handle it if it had focus.
+ if ((event.keyCode == KeyEvent.DOM_VK_HOME || event.keyCode == KeyEvent.DOM_VK_END) &&
+ this.filterbox.value)
+ return;
+
+ let listbox = this.listbox;
+ // The selectedIndex is -1 after a new filter. In this case, pressing the
+ // (page) down key from the filterbox should select the first item in the list.
+ if (listbox.selectedIndex < 0 && listbox.firstChild) {
+ if (event.keyCode != KeyEvent.DOM_VK_DOWN &&
+ event.keyCode != KeyEvent.DOM_VK_PAGE_DOWN)
+ return;
+ listbox.focus();
+ listbox.selectItem(listbox.firstChild);
+ listbox.ensureIndexIsVisible(0);
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ // If the first item was selected, the (page) up key should focus the filterbox.
+ else if (listbox.selectedIndex == 0 &&
+ (event.keyCode == KeyEvent.DOM_VK_UP ||
+ event.keyCode == KeyEvent.DOM_VK_PAGE_UP)) {
+ listbox.clearSelection();
+ listbox.ensureIndexIsVisible(0);
+ this.filterbox.focus();
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ // Otherwise, give listbox focus so that it can process the navigation key.
+ else
+ listbox.focus();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+
+ <binding id="newtab-item"
+ extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:hbox class="newtabContent" flex="1" xbl:inherits="status">
+ <xul:stack class="buddyStatusIconStack" mousethrough="always">
+ <xul:image anonid="buddyIcon" class="buddyIcon" xbl:inherits="src=buddyIcon,chat"/>
+ <xul:image anonid="statusIcon" class="statusTypeIcon" xbl:inherits="status,chat"/>
+ </xul:stack>
+ <xul:vbox flex="1">
+ <xul:spacer flex="1"/>
+ <xul:hbox>
+ <xul:label class="displayName" flex="1" crop="end" xbl:inherits="value=displayName"/>
+ <xul:hbox flex="10000">
+ <xul:spacer flex="10000"/>
+ <xul:image class="infoIcon" xbl:inherits="source,selected"/>
+ <xul:label class="infoText" flex="1" crop="end" xbl:inherits="value=infoText"/>
+ </xul:hbox>
+ </xul:hbox>
+ <xul:spacer flex="1"/>
+ <xul:hbox class="statusAndProtoIconBox">
+ <xul:label class="statusText" flex="1" crop="end" xbl:inherits="value=statusText"/>
+ <xul:image class="protoIcon" xbl:inherits="src=protoIcon"/>
+ </xul:hbox>
+ </xul:vbox>
+ </xul:hbox>
+ </content>
+
+ <implementation>
+ <field name="target">null</field>
+
+ <!-- Textual representation of list items for accessibility tools -->
+ <property name="label" readonly="true">
+ <getter>
+ <![CDATA[
+ let description = this.target.displayName;
+ let statusText = this.getAttribute("statusText");
+ if(this.target.isChat)
+ description += " (" + this.target.infoText + "): " + statusText;
+ else
+ description += " (" + statusText + "): " + this.target.infoText;
+ return description;
+ ]]>
+ </getter>
+ </property>
+
+ <method name="build">
+ <parameter name="aTarget"/>
+ <body>
+ <![CDATA[
+ this.target = aTarget;
+ this.setAttribute("displayName", aTarget.displayName);
+ let source = aTarget.source;
+ this.setAttribute("source", source);
+ // Could be an existing conversation or a contact.
+ if (source != "chat") {
+ if (!("Status" in window))
+ Components.utils.import("resource:///modules/imStatusUtils.jsm");
+ this.setAttribute("status", Status.toAttribute(aTarget.statusType));
+ }
+ else
+ this.removeAttribute("status");
+ // Could be a new chat or an existing chat conversation.
+ if (aTarget.isChat)
+ this.setAttribute("chat", true);
+ else
+ this.removeAttribute("chat");
+ let status;
+ if (aTarget.isChat)
+ status = aTarget.statusText;
+ else {
+ status = Status.toLabel(aTarget.statusType);
+ let statusText = aTarget.statusText;
+ if (statusText)
+ status += " - " + statusText;
+ }
+ this.setAttribute("statusText", status);
+ this.setAttribute("infoText", aTarget.infoText);
+ this.setAttribute("protoIcon", aTarget.account.protocol.iconBaseURI + "icon.png");
+ this.setAttribute("buddyIcon", aTarget.buddyIconFilename);
+ ]]>
+ </body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="click">
+ <![CDATA[
+ if (document.activeElement.localName != "richlistbox") {
+ // If the newtab had focus before the click, the focus would now be
+ // on the richlistbox. If the window wasn't focused before, this
+ // click should just focus it rather than starting a conversation.
+ return;
+ }
+ if (event.button == 2) // Don't handle right clicks.
+ return;
+ let newtab = document.getBindingParent(this);
+ newtab.startConversation(this);
+ let tabbrowser = window.getTabBrowser();
+ if (event.button != 1 && !event.controlKey && !event.metaKey)
+ tabbrowser.removeTab(newtab.tab);
+ else {
+ tabbrowser.selectPanel(newtab);
+ newtab.listbox.selectedIndex = -1;
+ newtab.filterbox.focus();
+ }
+ ]]>
+ </handler>
+
+ <handler event="mousemove">
+ <![CDATA[
+ document.getBindingParent(this).listbox.selectItem(this);
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/nsContextMenu.js
@@ -0,0 +1,520 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource:///modules/ibTagMenu.jsm");
+
+var gContextMenu = null;
+
+function nsContextMenu(aXulMenu, aBrowser) {
+ this.target = null;
+ this.browser = null;
+ this.conv = null;
+ this.menu = null;
+ this.tagMenu = null;
+ this.onLink = false;
+ this.onMailtoLink = false;
+ this.onSaveableLink = false;
+ this.link = false;
+ this.linkURL = "";
+ this.linkURI = null;
+ this.linkProtocol = null;
+ this.onNick = false;
+ this.nick = "";
+ this.buddy = null;
+ this.isNickOpenConv = false;
+ this.isNickShowLogs = false;
+ this.isNickAddContact = false;
+ this.isTextSelected = false;
+ this.isContentSelected = false;
+ this.shouldDisplay = true;
+
+ try {
+ this.ellipsis =
+ Services.prefs.getComplexValue("intl.ellipsis",
+ Ci.nsIPrefLocalizedString).data;
+ } catch (e) {
+ this.ellipsis = "\u2026";
+ }
+
+ // Initialize new menu.
+ this.initMenu(aXulMenu, aBrowser);
+}
+
+// Prototype for nsContextMenu "class."
+nsContextMenu.prototype = {
+ cleanup: function() {
+ let elt = document.getElementById("context-sep-selectall").nextSibling;
+ // remove the action menuitems added last time we opened the popup
+ while (elt && elt.localName != "menuseparator") {
+ let tmp = elt.nextSibling;
+ elt.parentNode.removeChild(elt);
+ elt = tmp;
+ }
+ },
+
+ // Initialize context menu.
+ initMenu: function CM_initMenu(aPopup, aBrowser) {
+ this.menu = aPopup;
+ this.browser = aBrowser;
+ this.conv = this.browser._conv;
+
+ // Get contextual info.
+ let node = document.popupNode;
+ if (node.localName == "listbox") {
+ // Clicked the participant list, but not a listitem.
+ this.shouldDisplay = false;
+ return;
+ }
+ this.setTarget(node);
+
+ let isParticipantList = node.localName == "listitem";
+ let nickActions = this.getNickActions(isParticipantList);
+ this.onNick = nickActions.some(function(action) action.visible);
+ if (isParticipantList && !this.onNick) {
+ // If we're in the participant list, there will be no other entries.
+ this.shouldDisplay = false;
+ return;
+ }
+
+ let actions = [];
+ while (node) {
+ if (node._originalMsg) {
+ let msg = node._originalMsg;
+ actions = msg.getActions();
+ break;
+ }
+ node = node.parentNode;
+ }
+
+ this.isTextSelected = this.isTextSelection();
+ this.isContentSelected = this.isContentSelection();
+
+ // Initialize (disable/remove) menu items.
+ // Open/Save/Send link depends on whether we're in a link.
+ let shouldShow = this.onSaveableLink;
+ this.showItem("context-openlink", shouldShow);
+ this.showItem("context-sep-open", shouldShow);
+ this.showItem("context-savelink", shouldShow);
+
+ this.showItem("context-searchselect", this.isTextSelected);
+ this.showItem("context-searchselect-with", this.isTextSelected);
+
+ // Copy depends on whether there is selected text.
+ // Enabling this context menu item is now done through the global
+ // command updating system
+ goUpdateGlobalEditMenuItems();
+
+ this.showItem("context-copy", this.isContentSelected);
+ this.showItem("context-selectall", (!this.onNick && !this.onLink) ||
+ this.isContentSelected);
+ this.showItem("context-sep-selectall", actions.length);
+ this.showItem("context-sep-messageactions", this.isTextSelected);
+
+ // Copy email link depends on whether we're on an email link.
+ this.showItem("context-copyemail", this.onMailtoLink);
+
+ // Copy link location depends on whether we're on a non-mailto link.
+ this.showItem("context-copylink", this.onLink && !this.onMailtoLink);
+ this.showItem("context-sep-copylink", this.onLink && this.isContentSelected);
+
+ // Display nick menu items.
+ let isNonNickItems = this.isContentSelected || this.isTextSelected ||
+ this.onLink || actions.length;
+ this.showItem("context-sep-nick", this.onNick && isNonNickItems);
+ for (let action of nickActions)
+ this.showItem(action.id, action.visible);
+
+ // Display action menu items.
+ let before = document.getElementById("context-sep-messageactions");
+ for each (let action in actions) {
+ let menuitem = document.createElement("menuitem");
+ menuitem.setAttribute("label", action.label);
+ menuitem.setAttribute("oncommand", "this.action.run();");
+ menuitem.action = action;
+ before.parentNode.insertBefore(menuitem, before);
+ }
+ },
+
+ getLogsForNick: function(aNick) {
+ let account = this.conv.account;
+ // We need the normalizedName of private conversations opened
+ // with a chatBuddy.
+ let normalizedName =
+ account.normalize(this.conv.target.getNormalizedChatBuddyName(aNick));
+ return Services.logs.getLogsForAccountAndName(account,
+ normalizedName, true);
+ },
+ getNickActions: function(aIsParticipantList) {
+ let bundle = document.getElementById("bundle_instantbird");
+ let nick = this.nick;
+ let actions = [];
+ let addAction = function(aId, aVisible) {
+ let domId = "context-nick-" + aId.toLowerCase();
+ let stringId = "contextmenu.nick" + aId;
+ if (!aIsParticipantList)
+ stringId += ".withNick";
+ document.getElementById(domId).label =
+ bundle.getFormattedString(stringId, [nick]);
+ actions.push({id: domId, visible: aVisible});
+ };
+
+ // Special-case twitter. XXX Drop this when twitter DMs work.
+ let isTwitter = this.conv.account.protocol.id == "prpl-twitter";
+
+ addAction("OpenConv", this.onNick && !isTwitter);
+ addAction("ShowLogs", this.onNick && this.getLogsForNick(nick).hasMoreElements());
+
+ let isAddContact = this.onNick && !isTwitter;
+ if (isAddContact) {
+ let account = this.conv.account;
+ // We don't want to support adding chatBuddies as contacts if we are not
+ // sure the normalizedChatBuddyName is enough information to add a contact.
+ // This is a problem e.g. for XMPP MUCs. We require at least that the
+ // normalizedChatBuddyName of the nick is normalized like a normalizedName
+ // for contacts.
+ let normalizedNick = this.conv.target.getNormalizedChatBuddyName(nick);
+ if (normalizedNick == account.normalize(normalizedNick)) {
+ this.buddy = Services.contacts
+ .getBuddyByNameAndProtocol(normalizedNick,
+ account.protocol);
+ isAddContact &= !this.buddy;
+ }
+ else
+ isAddContact = false;
+ }
+ if (isAddContact)
+ this.tagMenu = new TagMenu(this, window);
+ addAction("AddContact", isAddContact);
+
+ return actions;
+ },
+ nickOpenConv: function() {
+ let name = this.conv.target.getNormalizedChatBuddyName(this.nick);
+ let newConv = this.conv.account.createConversation(name);
+ Conversations.focusConversation(newConv);
+ },
+ nickAddContact: function(aTag)
+ this.conv.account.addBuddy(aTag, this.nick),
+ nickShowLogs: function() {
+ let nick = this.nick;
+ let enumerator = this.getLogsForNick(nick);
+ if (!enumerator.hasMoreElements())
+ return;
+ window.openDialog("chrome://instantbird/content/viewlog.xul",
+ "Logs", "chrome,resizable", {logs: enumerator}, nick);
+ },
+
+ // Set various context menu attributes based on the state of the world.
+ setTarget: function(aNode) {
+ // Remember the node that was clicked.
+ this.target = aNode;
+
+ // Check if we are in the participant list.
+ if (this.target.localName == "listitem") {
+ this.onNick = true;
+ this.nick = this.target.label;
+ return;
+ }
+
+ // First, do checks for nodes that never have children.
+ // Second, bubble out, looking for items of interest that can have childen.
+ // Always pick the innermost link, background image, etc.
+ const XMLNS = "http://www.w3.org/XML/1998/namespace";
+ var elem = this.target;
+ while (elem) {
+ if (elem.nodeType == Node.ELEMENT_NODE) {
+ // Link?
+ if (!this.onLink &&
+ ((elem instanceof HTMLAnchorElement && elem.href) ||
+ (elem instanceof HTMLAreaElement && elem.href) ||
+ elem instanceof HTMLLinkElement ||
+ elem.getAttributeNS("http://www.w3.org/1999/xlink", "type") == "simple")) {
+
+ // Target is a link or a descendant of a link.
+ this.onLink = true;
+
+ // xxxmpc: this is kind of a hack to work around a Gecko bug (see bug 266932)
+ // we're going to walk up the DOM looking for a parent link node,
+ // this shouldn't be necessary, but we're matching the existing behaviour for left click
+ var realLink = elem;
+ var parent = elem;
+ while ((parent = parent.parentNode) &&
+ (parent.nodeType == Node.ELEMENT_NODE)) {
+ try {
+ if ((parent instanceof HTMLAnchorElement && parent.href) ||
+ (parent instanceof HTMLAreaElement && parent.href) ||
+ parent instanceof HTMLLinkElement ||
+ parent.getAttributeNS("http://www.w3.org/1999/xlink", "type") == "simple")
+ realLink = parent;
+ } catch (e) { }
+ }
+
+ // Remember corresponding element.
+ this.link = realLink;
+ this.linkURL = this.getLinkURL();
+ this.linkURI = this.getLinkURI();
+ this.linkProtocol = this.getLinkProtocol();
+ this.onMailtoLink = (this.linkProtocol == "mailto");
+ this.onSaveableLink = this.isLinkSaveable(this.link);
+ }
+
+ // Nick?
+ if (!this.onNick && this.conv.isChat &&
+ (elem.classList.contains("ib-nick") || elem.classList.contains("ib-sender"))) {
+ this.nick = elem.textContent;
+ this.onNick = true;
+ }
+ }
+
+ elem = elem.parentNode;
+ }
+ },
+
+ // Returns true if clicked-on link targets a resource that can be saved.
+ isLinkSaveable: function(aLink) {
+ return this.linkProtocol && !(
+ this.linkProtocol == "mailto" ||
+ this.linkProtocol == "javascript" ||
+ this.linkProtocol == "news" ||
+ this.linkProtocol == "snews" );
+ },
+
+ openEngineManager: function() {
+ var window = Services.wm.getMostRecentWindow("Browser:SearchManager");
+ if (window)
+ window.focus();
+ else {
+ openDialog("chrome://instantbird/content/engineManager.xul",
+ "_blank", "chrome,dialog,modal,centerscreen");
+ }
+ },
+
+ buildSearchEngineList: function() {
+ let popup = document.getElementById("context-popup-searchselect-with");
+ // remove the menuitems added last time we opened the popup
+ while (popup.firstChild && popup.firstChild.localName != "menuseparator")
+ popup.removeChild(popup.firstChild);
+
+ let engines = Services.search.getVisibleEngines({});
+
+ for (let i = engines.length - 1; i >= 0; --i) {
+ let menuitem = document.createElement("menuitem");
+ let name = engines[i].name;
+ menuitem.setAttribute("label", name);
+ menuitem.setAttribute("class", "menuitem-iconic");
+ if (engines[i].iconURI)
+ menuitem.setAttribute("src", engines[i].iconURI.spec);
+ popup.insertBefore(menuitem, popup.firstChild);
+ menuitem.engine = engines[i];
+ }
+ },
+
+ searchSelectionWith: function(aEvent) {
+ var engine = aEvent.originalTarget.engine;
+ if (engine)
+ this.searchSelection(engine);
+ },
+
+ searchSelection: function(aEngine) {
+ if (!aEngine) {
+ aEngine = Services.search.defaultEngine;
+ }
+
+ var submission = aEngine.getSubmission(getBrowserSelection(), null);
+ // getSubmission can return null if the engine doesn't have a URL
+ // with a text/html response type. This is unlikely (since
+ // SearchService._addEngineToStore() should fail for such an engine),
+ // but let's be on the safe side.
+ if (!submission)
+ return;
+
+ this.openLink(submission.uri);
+ },
+
+ // Open linked-to URL in a new window.
+ openLink: function(aURI) {
+ Cc["@mozilla.org/uriloader/external-protocol-service;1"].
+ getService(Ci.nsIExternalProtocolService).
+ loadURI(aURI || this.linkURI, window);
+ },
+
+ // Generate email address and put it on clipboard.
+ copyEmail: function() {
+ // Copy the comma-separated list of email addresses only.
+ // There are other ways of embedding email addresses in a mailto:
+ // link, but such complex parsing is beyond us.
+ var url = this.linkURL;
+ var qmark = url.indexOf("?");
+ var addresses;
+
+ // 7 == length of "mailto:"
+ addresses = qmark > 7 ? url.substring(7, qmark) : url.substr(7);
+
+ // Let's try to unescape it using a character set
+ // in case the address is not ASCII.
+ try {
+ var characterSet = this.target.ownerDocument.characterSet;
+ const textToSubURI = Cc["@mozilla.org/intl/texttosuburi;1"].
+ getService(Ci.nsITextToSubURI);
+ addresses = textToSubURI.unEscapeURIForUI(characterSet, addresses);
+ }
+ catch(ex) {
+ // Do nothing.
+ }
+
+ var clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].
+ getService(Ci.nsIClipboardHelper);
+ clipboard.copyString(addresses);
+ },
+
+ ///////////////
+ // Utilities //
+ ///////////////
+
+ // Show/hide one item (specified via name or the item element itself).
+ showItem: function(aItemOrId, aShow) {
+ var item = aItemOrId.constructor == String ?
+ document.getElementById(aItemOrId) : aItemOrId;
+ if (item)
+ item.hidden = !aShow;
+ },
+
+ // Temporary workaround for DOM api not yet implemented by XUL nodes.
+ cloneNode: function(aItem) {
+ // Create another element like the one we're cloning.
+ var node = document.createElement(aItem.tagName);
+
+ // Copy attributes from argument item to the new one.
+ var attrs = aItem.attributes;
+ for (var i = 0; i < attrs.length; i++) {
+ var attr = attrs.item(i);
+ node.setAttribute(attr.nodeName, attr.nodeValue);
+ }
+
+ // Voila!
+ return node;
+ },
+
+ // Generate fully qualified URL for clicked-on link.
+ getLinkURL: function() {
+ var href = this.link.href;
+ if (href)
+ return href;
+
+ href = this.link.getAttributeNS("http://www.w3.org/1999/xlink",
+ "href");
+
+ if (!href || !href.match(/\S/)) {
+ // Without this we try to save as the current doc,
+ // for example, HTML case also throws if empty
+ throw "Empty href";
+ }
+
+ return makeURLAbsolute(this.link.baseURI, href);
+ },
+
+ getLinkURI: function() {
+ try {
+ return Services.io.newURI(this.linkURL, null, null);
+ }
+ catch (ex) {
+ // e.g. empty URL string
+ }
+
+ return null;
+ },
+
+ getLinkProtocol: function() {
+ if (this.linkURI)
+ return this.linkURI.scheme; // can be |undefined|
+
+ return null;
+ },
+
+ // Get text of link.
+ linkText: function() {
+ var text = gatherTextUnder(this.link);
+ if (!text || !text.match(/\S/)) {
+ text = this.link.getAttribute("title");
+ if (!text || !text.match(/\S/)) {
+ text = this.link.getAttribute("alt");
+ if (!text || !text.match(/\S/))
+ text = this.linkURL;
+ }
+ }
+
+ return text;
+ },
+
+ // Get selected text. Only display the first 15 chars.
+ isTextSelection: function() {
+ // Get 16 characters, so that we can trim the selection if it's greater
+ // than 15 chars
+ var selectedText = getBrowserSelection(16);
+
+ if (!selectedText)
+ return false;
+
+ if (selectedText.length > 15)
+ selectedText = selectedText.substr(0,15) + this.ellipsis;
+
+ var engine = Services.search.defaultEngine;
+ if (!engine)
+ return false;
+
+ // format "Search <engine> for <selection>" string to show in menu
+ var bundle = document.getElementById("bundle_instantbird");
+ var menuLabel = bundle.getFormattedString("contextMenuSearchText",
+ [engine.name,
+ selectedText]);
+ document.getElementById("context-searchselect").label = menuLabel;
+ document.getElementById("context-searchselect").accessKey =
+ bundle.getString("contextMenuSearchText.accesskey");
+ menuLabel = bundle.getFormattedString("contextMenuSearchWith",
+ [selectedText]);
+ document.getElementById("context-searchselect-with").label = menuLabel;
+
+ return true;
+ },
+
+ // Returns true if anything is selected.
+ isContentSelection: function() {
+ return !document.commandDispatcher.focusedWindow.getSelection().isCollapsed;
+ }
+};
+
+/**
+ * Gets the selected text in the active browser. Leading and trailing
+ * whitespace is removed, and consecutive whitespace is replaced by a single
+ * space. A maximum of 150 characters will be returned, regardless of the value
+ * of aCharLen.
+ *
+ * @param aCharLen
+ * The maximum number of characters to return.
+ */
+function getBrowserSelection(aCharLen) {
+ // selections of more than 150 characters aren't useful
+ const kMaxSelectionLen = 150;
+ const charLen = Math.min(aCharLen || kMaxSelectionLen, kMaxSelectionLen);
+
+ var focusedWindow = document.commandDispatcher.focusedWindow;
+ var selection = focusedWindow.getSelection().toString();
+
+ if (selection) {
+ if (selection.length > charLen) {
+ // only use the first charLen important chars. see bug 221361
+ var pattern = new RegExp("^(?:\\s*.){0," + charLen + "}");
+ pattern.test(selection);
+ selection = RegExp.lastMatch;
+ }
+
+ selection = selection.replace(/^\s+/, "")
+ .replace(/\s+$/, "")
+ .replace(/\s+/g, " ");
+
+ if (selection.length > charLen)
+ selection = selection.substr(0, charLen);
+ }
+ return selection;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/overrides/app-license.html
@@ -0,0 +1,4 @@
+ <p>Official <b>binaries</b> of this product released by
+ the <a href="http://www.instantbird.com/">Instantbird</a> team
+ are made available under the GNU General Public License
+ (<a href="#gpl">GPL</a>) version 2.0 or later.
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/advanced.js
@@ -0,0 +1,426 @@
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// Load DownloadUtils module for convertByteUnits
+Components.utils.import("resource://gre/modules/DownloadUtils.jsm");
+
+var gAdvancedPane = {
+ _inited: false,
+
+ /**
+ * Brings the appropriate tab to the front and initializes various bits of UI.
+ */
+ init: function ()
+ {
+ this._inited = true;
+ var advancedPrefs = document.getElementById("advancedPrefs");
+
+ var extraArgs = ("arguments" in window) && window.arguments[1];
+ if (extraArgs && extraArgs["advancedTab"]){
+ advancedPrefs.selectedTab = document.getElementById(extraArgs["advancedTab"]);
+ } else {
+ var preference = document.getElementById("browser.preferences.advanced.selectedTabIndex");
+ if (preference.value !== null)
+ advancedPrefs.selectedIndex = preference.value;
+ }
+
+ this.updateConnectionGroupbox();
+#ifdef MOZ_UPDATER
+ this.updateAppUpdateItems();
+ this.updateAutoItems();
+ this.updateModeItems();
+#endif
+ },
+
+ /**
+ * Stores the identity of the current tab in preferences so that the selected
+ * tab can be persisted between openings of the preferences window.
+ */
+ tabSelectionChanged: function ()
+ {
+ if (!this._inited)
+ return;
+ var advancedPrefs = document.getElementById("advancedPrefs");
+ var preference = document.getElementById("browser.preferences.advanced.selectedTabIndex");
+ preference.valueFromPreferences = advancedPrefs.selectedIndex;
+ },
+
+ // GENERAL TAB
+
+ /*
+ * Preferences:
+ *
+ * accessibility.browsewithcaret
+ * - true enables keyboard navigation and selection within web pages using a
+ * visible caret, false uses normal keyboard navigation with no caret
+ * accessibility.typeaheadfind
+ * - when set to true, typing outside text areas and input boxes will
+ * automatically start searching for what's typed within the current
+ * document; when set to false, no search action happens
+ * general.autoScroll
+ * - when set to true, clicking the scroll wheel on the mouse activates a
+ * mouse mode where moving the mouse down scrolls the document downward with
+ * speed correlated with the distance of the cursor from the original
+ * position at which the click occurred (and likewise with movement upward);
+ * if false, this behavior is disabled
+ * general.smoothScroll
+ * - set to true to enable finer page scrolling than line-by-line on page-up,
+ * page-down, and other such page movements
+ * layout.spellcheckDefault
+ * - an integer:
+ * 0 disables spellchecking
+ * 1 enables spellchecking, but only for multiline text fields
+ * 2 enables spellchecking for all text fields
+ */
+
+ /**
+ * Stores the original value of the spellchecking preference to enable proper
+ * restoration if unchanged (since we're mapping a tristate onto a checkbox).
+ */
+ _storedSpellCheck: 0,
+
+ /**
+ * Returns true if any spellchecking is enabled and false otherwise, caching
+ * the current value to enable proper pref restoration if the checkbox is
+ * never changed.
+ */
+ readCheckSpelling: function ()
+ {
+ var pref = document.getElementById("layout.spellcheckDefault");
+ this._storedSpellCheck = pref.value;
+
+ return (pref.value != 0);
+ },
+
+ /**
+ * Returns the value of the spellchecking preference represented by UI,
+ * preserving the preference's "hidden" value if the preference is
+ * unchanged and represents a value not strictly allowed in UI.
+ */
+ writeCheckSpelling: function ()
+ {
+ var checkbox = document.getElementById("checkSpelling");
+ return checkbox.checked ? (this._storedSpellCheck == 2 ? 2 : 1) : 0;
+ },
+
+ showSearchEngineManager: function()
+ {
+ var window = Services.wm.getMostRecentWindow("Browser:SearchManager");
+ if (window)
+ window.focus();
+ else {
+ openDialog("chrome://instantbird/content/engineManager.xul",
+ "_blank", "chrome,dialog,modal,centerscreen");
+ }
+ },
+
+ showConfigEdit: function()
+ {
+ document.documentElement.openWindow("Preferences:ConfigManager",
+ "chrome://global/content/config.xul",
+ "", null);
+ },
+
+ // NETWORK TAB
+
+ /*
+ * Preferences:
+ *
+ * browser.cache.disk.capacity
+ * - the size of the browser cache in KB
+ */
+
+ /**
+ * Displays a dialog in which proxy settings may be changed.
+ */
+ showConnections: function ()
+ {
+ document.documentElement.openSubDialog("chrome://instantbird/content/preferences/connection.xul",
+ "", null);
+ },
+
+ /**
+ * Displays a dialog in which purple proxy settings may be changed.
+ */
+ showProxies: function ()
+ {
+ document.documentElement.openSubDialog("chrome://instantbird/content/proxies.xul",
+ "", null);
+ },
+
+ /**
+ * Adapt the content of the connection groupbox depending on libpurple being
+ * there or not.
+ */
+ updateConnectionGroupbox: function ()
+ {
+ let hasLibpurple = "@instantbird.org/libpurple/core;1" in Components.classes;
+ // Hide explanatory header and libpurple section.
+ document.getElementById("connectionGroupHeader").hidden = !hasLibpurple;
+ document.getElementById("connectionGroupSeparator").hidden = !hasLibpurple;
+ document.getElementById("purpleConnectionBox").hidden = !hasLibpurple;
+ // Choose appropriate label for the Mozilla proxy options.
+ document.getElementById("mozConnLabelWithoutLibpurple").hidden = hasLibpurple;
+ document.getElementById("mozConnLabelWithLibpurple").hidden = !hasLibpurple;
+ },
+
+ // UPDATE TAB
+
+ /*
+ * Preferences:
+ *
+ * app.update.enabled
+ * - true if updates to the application are enabled, false otherwise
+ * extensions.update.enabled
+ * - true if updates to extensions and themes are enabled, false otherwise
+ * browser.search.update
+ * - true if updates to search engines are enabled, false otherwise
+ * app.update.auto
+ * - true if updates should be automatically downloaded and installed,
+ * possibly with a warning if incompatible extensions are installed (see
+ * app.update.mode); false if the user should be asked what he wants to do
+ * when an update is available
+ * app.update.mode
+ * - an integer:
+ * 0 do not warn if an update will disable extensions or themes
+ * 1 warn if an update will disable extensions or themes
+ * 2 warn if an update will disable extensions or themes *or* if the
+ * update is a major update
+ */
+
+ /**
+ * Enables and disables various UI preferences as necessary to reflect locked,
+ * disabled, and checked/unchecked states.
+ *
+ * UI state matrix for update preference conditions
+ *
+ * UI Components: Preferences
+ * 1 = Firefox checkbox i = app.update.enabled
+ * 2 = When updates for Firefox are found label ii = app.update.auto
+ * 3 = Automatic Radiogroup (Ask vs. Automatically) iii = app.update.mode
+ * 4 = Warn before disabling extensions checkbox
+ *
+ * States:
+ * Element p val locked Disabled
+ * 1 i t/f f false
+ * i t/f t true
+ * ii t/f t/f false
+ * iii 0/1/2 t/f false
+ * 2,3 i t t/f false
+ * i f t/f true
+ * ii t/f f false
+ * ii t/f t true
+ * iii 0/1/2 t/f false
+ * 4 i t t/f false
+ * i f t/f true
+ * ii t t/f false
+ * ii f t/f true
+ * iii 0/1/2 f false
+ * iii 0/1/2 t true
+ *
+ */
+#ifdef MOZ_UPDATER
+ updateAppUpdateItems: function ()
+ {
+ var aus =
+ Components.classes["@mozilla.org/updates/update-service;1"].
+ getService(Components.interfaces.nsIApplicationUpdateService);
+
+ var enabledPref = document.getElementById("app.update.enabled");
+ var enableAppUpdate = document.getElementById("enableAppUpdate");
+
+ enableAppUpdate.disabled = !aus.canCheckForUpdates || enabledPref.locked;
+ },
+
+ /**
+ * Enables/disables UI for "when updates are found" based on the values,
+ * and "locked" states of associated preferences.
+ */
+ updateAutoItems: function ()
+ {
+ var enabledPref = document.getElementById("app.update.enabled");
+ var autoPref = document.getElementById("app.update.auto");
+
+ var updateModeLabel = document.getElementById("updateModeLabel");
+ var updateMode = document.getElementById("updateMode");
+
+ var disable = enabledPref.locked || !enabledPref.value ||
+ autoPref.locked;
+ updateModeLabel.disabled = updateMode.disabled = disable;
+ },
+
+ /**
+ * Enables/disables the "warn if incompatible extensions/themes exist" UI
+ * based on the values and "locked" states of various preferences.
+ */
+ updateModeItems: function ()
+ {
+ var enabledPref = document.getElementById("app.update.enabled");
+ var autoPref = document.getElementById("app.update.auto");
+ var modePref = document.getElementById("app.update.mode");
+
+ var warnIncompatible = document.getElementById("warnIncompatible");
+
+ var disable = enabledPref.locked || !enabledPref.value || autoPref.locked ||
+ !autoPref.value || modePref.locked;
+ warnIncompatible.disabled = disable;
+ },
+
+ /**
+ * Stores the value of the app.update.mode preference, which is a tristate
+ * integer preference. We store the value here so that we can properly
+ * restore the preference value if the UI reflecting the preference value
+ * is in a state which can represent either of two integer values (as
+ * opposed to only one possible value in the other UI state).
+ */
+ _modePreference: -1,
+
+ /**
+ * Reads the app.update.mode preference and converts its value into a
+ * true/false value for use in determining whether the "Warn me if this will
+ * disable extensions or themes" checkbox is checked. We also save the value
+ * of the preference so that the preference value can be properly restored if
+ * the user's preferences cannot adequately be expressed by a single checkbox.
+ *
+ * app.update.modee Checkbox State Meaning
+ * 0 Unchecked Do not warn
+ * 1 Checked Warn if there are incompatibilities
+ * 2 Checked Warn if there are incompatibilities,
+ * or the update is major.
+ */
+ readAddonWarn: function ()
+ {
+ var preference = document.getElementById("app.update.mode");
+ var doNotWarn = preference.value != 0;
+ gAdvancedPane._modePreference = doNotWarn ? preference.value : 1;
+ return doNotWarn;
+ },
+
+ /**
+ * Converts the state of the "Warn me if this will disable extensions or
+ * themes" checkbox into the integer preference which represents it,
+ * returning that value.
+ */
+ writeAddonWarn: function ()
+ {
+ var warnIncompatible = document.getElementById("warnIncompatible");
+ return !warnIncompatible.checked ? 0 : gAdvancedPane._modePreference;
+ },
+
+ /**
+ * Displays the history of installed updates.
+ */
+ showUpdates: function ()
+ {
+ var prompter = Components.classes["@mozilla.org/updates/update-prompt;1"]
+ .createInstance(Components.interfaces.nsIUpdatePrompt);
+ prompter.showUpdateHistory(window);
+ },
+#endif
+
+ /**
+ * The Extensions checkbox and button are disabled only if the enable Addon
+ * update preference is locked.
+ */
+ updateAddonUpdateUI: function ()
+ {
+ var enabledPref = document.getElementById("extensions.update.enabled");
+ var enableAddonUpdate = document.getElementById("enableAddonUpdate");
+
+ enableAddonUpdate.disabled = enabledPref.locked;
+ },
+
+ // ENCRYPTION TAB
+
+ /*
+ * Preferences:
+ *
+ * security.enable_ssl3
+ * - true if SSL 3 encryption is enabled, false otherwise
+ * security.enable_tls
+ * - true if TLS encryption is enabled, false otherwise
+ * security.default_personal_cert
+ * - a string:
+ * "Select Automatically" select a certificate automatically when a site
+ * requests one
+ * "Ask Every Time" present a dialog to the user so he can select
+ * the certificate to use on a site which
+ * requests one
+ */
+
+ /**
+ * Displays the user's certificates and associated options.
+ */
+ showCertificates: function ()
+ {
+ document.documentElement.openWindow("mozilla:certmanager",
+ "chrome://pippki/content/certManager.xul",
+ "", null);
+ },
+
+ /**
+ * Displays a dialog in which OCSP preferences can be configured.
+ */
+ showOCSP: function ()
+ {
+ document.documentElement.openSubDialog("chrome://mozapps/content/preferences/ocsp.xul",
+ "", null);
+ },
+
+ /**
+ * Displays a dialog from which the user can manage his security devices.
+ */
+ showSecurityDevices: function ()
+ {
+ document.documentElement.openWindow("mozilla:devicemanager",
+ "chrome://pippki/content/device_manager.xul",
+ "", null);
+ }
+#ifdef HAVE_SHELL_SERVICE
+ ,
+
+ // SYSTEM DEFAULTS
+
+ /*
+ * Preferences:
+ *
+ * browser.shell.checkDefault
+ * - true if a default-browser check (and prompt to make it so if necessary)
+ * occurs at startup, false otherwise
+ */
+
+ /**
+ * Checks whether the browser is currently registered with the operating
+ * system as the default browser. If the browser is not currently the
+ * default browser, the user is given the option of making it the default;
+ * otherwise, the user is informed that this browser already is the browser.
+ */
+ checkNow: function ()
+ {
+ var shellSvc = Components.classes["@mozilla.org/browser/shell-service;1"]
+ .getService(Components.interfaces.nsIShellService);
+ var brandBundle = document.getElementById("bundleBrand");
+ var shellBundle = document.getElementById("bundleShell");
+ var brandShortName = brandBundle.getString("brandShortName");
+ var promptTitle = shellBundle.getString("setDefaultBrowserTitle");
+ var promptMessage;
+ var psvc = Services.prompt;
+ if (!shellSvc.isDefaultBrowser(false)) {
+ promptMessage = shellBundle.getFormattedString("setDefaultBrowserMessage",
+ [brandShortName]);
+ var rv = psvc.confirmEx(window, promptTitle, promptMessage,
+ psvc.STD_YES_NO_BUTTONS,
+ null, null, null, null, { });
+ if (rv == 0)
+ shellSvc.setDefaultBrowser(true, false);
+ }
+ else {
+ promptMessage = shellBundle.getFormattedString("alreadyDefaultBrowser",
+ [brandShortName]);
+ psvc.alert(window, promptTitle, promptMessage);
+ }
+ }
+#endif
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/advanced.xul
@@ -0,0 +1,334 @@
+<?xml version="1.0"?>
+
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<!DOCTYPE overlay [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+%brandDTD;
+<!ENTITY % advancedDTD SYSTEM "chrome://instantbird/locale/preferences/advanced.dtd">
+%advancedDTD;
+<!ENTITY % privacyDTD SYSTEM "chrome://instantbird/locale/preferences/privacy.dtd">
+%privacyDTD;
+]>
+
+<overlay id="AdvancedPaneOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <prefpane id="paneAdvanced" onpaneload="gAdvancedPane.init();">
+
+ <preferences id="advancedPreferences">
+ <preference id="browser.preferences.advanced.selectedTabIndex"
+ name="browser.preferences.advanced.selectedTabIndex"
+ type="int"/>
+
+ <!--XXX button prefs -->
+
+ <!-- General tab -->
+ <preference id="accessibility.browsewithcaret" name="accessibility.browsewithcaret" type="bool"/>
+ <preference id="accessibility.typeaheadfind" name="accessibility.typeaheadfind" type="bool"/>
+
+ <preference id="general.autoScroll" name="general.autoScroll" type="bool"/>
+ <preference id="general.smoothScroll" name="general.smoothScroll" type="bool"/>
+ <preference id="layout.spellcheckDefault" name="layout.spellcheckDefault" type="int"/>
+
+#ifdef HAVE_SHELL_SERVICE
+ <preference id="browser.shell.checkDefaultBrowser"
+ name="browser.shell.checkDefaultBrowser"
+ type="bool"/>
+
+ <preference id="pref.general.disable_button.default_browser"
+ name="pref.general.disable_button.default_browser"
+ type="bool"/>
+#endif
+
+ <!-- Update tab -->
+#ifdef MOZ_UPDATER
+ <preference id="app.update.enabled" name="app.update.enabled" type="bool"
+ onchange="gAdvancedPane.updateAppUpdateItems();
+ gAdvancedPane.updateAutoItems();
+ gAdvancedPane.updateModeItems();"/>
+ <preference id="app.update.auto" name="app.update.auto" type="bool"
+ onchange="gAdvancedPane.updateAutoItems();
+ gAdvancedPane.updateModeItems();"/>
+ <preference id="app.update.mode" name="app.update.mode" type="int"
+ onchange="gAdvancedPane.updateModeItems();"/>
+
+ <preference id="app.update.disable_button.showUpdateHistory"
+ name="app.update.disable_button.showUpdateHistory"
+ type="bool"/>
+#endif
+
+ <preference id="extensions.update.enabled" name="extensions.update.enabled" type="bool"
+ onchange="gAdvancedPane.updateAddonUpdateUI();"/>
+ <preference id="browser.search.update" name="browser.search.update" type="bool"/>
+
+ <!-- Encryption tab -->
+ <preference id="security.enable_ssl3" name="security.enable_ssl3" type="bool"/>
+ <preference id="security.enable_tls" name="security.enable_tls" type="bool"/>
+
+ <preference id="security.default_personal_cert" name="security.default_personal_cert" type="string"/>
+
+ <preference id="security.disable_button.openCertManager"
+ name="security.disable_button.openCertManager"
+ type="bool"/>
+ <preference id="security.disable_button.openDeviceManager"
+ name="security.disable_button.openDeviceManager"
+ type="bool"/>
+ </preferences>
+
+#ifdef HAVE_SHELL_SERVICE
+ <stringbundle id="bundleShell" src="chrome://browser/locale/shellservice.properties"/>
+ <stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/>
+#endif
+
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/advanced.js"/>
+
+ <tabbox id="advancedPrefs" flex="1"
+ onselect="gAdvancedPane.tabSelectionChanged();">
+
+ <tabs id="tabsElement">
+ <tab id="generalTab" label="&generalTab.label;"/>
+ <tab id="networkTab" label="&networkTab.label;"/>
+ <tab id="updateTab" label="&updateTab.label;"/>
+ <tab id="encryptionTab" label="&encryptionTab.label;"/>
+ </tabs>
+
+ <tabpanels flex="1">
+
+ <!-- General -->
+ <tabpanel id="generalPanel" orient="vertical">
+
+ <!-- Accessibility -->
+ <groupbox id="accessibilityGroup" align="start">
+ <caption label="&accessibility.label;"/>
+
+ <checkbox id="useCursorNavigation"
+ label="&useCursorNavigation.label;"
+ accesskey="&useCursorNavigation.accesskey;"
+ preference="accessibility.browsewithcaret"/>
+ <checkbox id="searchStartTyping"
+ label="&searchStartTyping.label;"
+ accesskey="&searchStartTyping.accesskey;"
+ preference="accessibility.typeaheadfind"/>
+ </groupbox>
+
+ <!-- Conversations -->
+ <groupbox id="conversationsGroup" align="start">
+ <caption label="&conversations.label;"/>
+
+ <checkbox id="useAutoScroll"
+ label="&useAutoScroll.label;"
+ accesskey="&useAutoScroll.accesskey;"
+ preference="general.autoScroll"/>
+ <checkbox id="useSmoothScrolling"
+ label="&useSmoothScrolling.label;"
+ accesskey="&useSmoothScrolling.accesskey;"
+ preference="general.smoothScroll"/>
+ <checkbox id="checkSpelling"
+ label="&checkSpelling.label;"
+ accesskey="&checkSpelling.accesskey;"
+ onsyncfrompreference="return gAdvancedPane.readCheckSpelling();"
+ onsynctopreference="return gAdvancedPane.writeCheckSpelling();"
+ preference="layout.spellcheckDefault"/>
+ </groupbox>
+
+ <!-- Search engines -->
+ <groupbox id="searchEnginesGroup" orient="horizontal" align="center">
+ <caption label="&searchEnginesGroup.label;"/>
+
+ <description control="manageSearchEnginesButton"
+ flex="1">&searchEnginesDesc.label;</description>
+ <button id="manageSearchEnginesButton" label="&searchEngines.label;"
+ accesskey="&searchEngines.accesskey;"
+ oncommand="gAdvancedPane.showSearchEngineManager();"/>
+ </groupbox>
+
+#ifdef HAVE_SHELL_SERVICE
+ <!-- System Defaults -->
+ <groupbox id="systemDefaultsGroup" orient="horizontal">
+ <caption label="&systemDefaults.label;"/>
+
+ <hbox id="checkDefaultBox" align="center" flex="1">
+ <checkbox id="alwaysCheckDefault" preference="browser.shell.checkDefaultBrowser"
+ label="&alwaysCheckDefault.label;" accesskey="&alwaysCheckDefault.accesskey;"
+ flex="1"/>
+ <button id="checkDefaultButton"
+ label="&checkNow.label;" accesskey="&checkNow.accesskey;"
+ oncommand="gAdvancedPane.checkNow()"
+ preference="pref.general.disable_button.default_browser"/>
+ </hbox>
+ </groupbox>
+#endif
+
+ <!-- Advanced Configuration -->
+ <groupbox>
+ <caption label="&configEditDesc.label;"/>
+ <hbox pack="end">
+ <button id="configEditor" label="&configEdit.label;"
+ accesskey="&configEdit.accesskey;"
+ oncommand="gAdvancedPane.showConfigEdit();"/>
+ </hbox>
+ </groupbox>
+ </tabpanel>
+
+ <!-- Network -->
+ <tabpanel id="networkPanel" orient="vertical">
+
+ <!-- Connection -->
+ <groupbox id="connectionGroup">
+ <caption label="&connection.label;"/>
+
+ <hbox id="connectionGroupHeader" align="center">
+ <image style="padding-right: 1em;" src="chrome://global/skin/icons/information-32.png"/>
+ <vbox>
+ <description flex="1">&connectionInfoDesc.label;</description>
+ <description flex="1">&connectionDesc.label;</description>
+ </vbox>
+ </hbox>
+
+ <separator id="connectionGroupSeparator" class="thin"/>
+
+ <hbox align="center" id="purpleConnectionBox">
+ <description flex="1" control="connectionSettingsPurple">&connectionLibpurpleDesc.label;</description>
+ <button id="connectionSettingsPurple" icon="network" label="&connectionSettings.label;"
+ accesskey="&connectionSettings.accesskey;"
+ oncommand="gAdvancedPane.showProxies();"/>
+ </hbox>
+
+ <hbox align="center" id="mozillaConnectionBox">
+ <description id="mozConnLabelWithoutLibpurple" flex="1" control="connectionSettings">&connectionDesc.label;</description>
+ <description id="mozConnLabelWithLibpurple" flex="1" control="connectionSettings">&connectionOtherDesc.label;</description>
+ <button id="connectionSettings" icon="network" label="&connectionSettings.label;"
+ accesskey="&connectionSettings2.accesskey;"
+ oncommand="gAdvancedPane.showConnections();"/>
+ </hbox>
+ </groupbox>
+ </tabpanel>
+
+ <!-- Update -->
+ <tabpanel id="updatePanel" orient="vertical" align="start">
+ <label control="autoUpdateGroup">&autoCheck.label;</label>
+ <vbox class="indent" id="autoUpdateGroup" role="group">
+#ifdef MOZ_UPDATER
+ <checkbox id="enableAppUpdate"
+ label="&enableAppUpdate.label;"
+ accesskey="&enableAppUpdate.accesskey;"
+ preference="app.update.enabled"/>
+#endif
+ <checkbox id="enableAddonUpdate"
+ label="&enableAddonsUpdate.label;"
+ accesskey="&enableAddonsUpdate.accesskey;"
+ preference="extensions.update.enabled"/>
+ <checkbox id="enableSearchUpdate"
+ label="&enableSearchUpdate.label;"
+ accesskey="&enableSearchUpdate.accesskey;"
+ preference="browser.search.update"/>
+ </vbox>
+
+#ifdef MOZ_UPDATER
+ <separator id="updateSeparator1"/>
+
+ <label id="updateModeLabel" control="updateMode">&whenUpdatesFound.label;</label>
+ <radiogroup id="updateMode" class="indent"
+ preference="app.update.auto">
+ <radio id="ask" value="false"
+ label="&askMe.label;"
+ accesskey="&askMe.accesskey;"/>
+ <radio id="automatic" value="true"
+ label="&modeAutomatic.label;"
+ accesskey="&modeAutomatic.accesskey;"/>
+ <hbox class="indent">
+ <checkbox id="warnIncompatible"
+ label="&modeAutoAddonWarn.label;" accesskey="&modeAutoAddonWarn.accesskey;"
+ preference="app.update.mode"
+ onsyncfrompreference="return gAdvancedPane.readAddonWarn();"
+ onsynctopreference="return gAdvancedPane.writeAddonWarn();"/>
+ </hbox>
+ </radiogroup>
+
+ <separator id="updateSeparator2"/>
+
+ <hbox>
+ <button id="showUpdateHistory"
+ label="&updateHistory.label;" accesskey="&updateHistory.accesskey;"
+ preference="app.update.disable_button.showUpdateHistory"
+ oncommand="gAdvancedPane.showUpdates();"/>
+ </hbox>
+#endif
+ </tabpanel>
+
+ <!-- Encryption -->
+ <tabpanel id="encryptionPanel" orient="vertical">
+
+ <!-- Protocols -->
+ <groupbox id="protocolsGroup">
+ <caption label="&protocols.label;"/>
+
+ <grid>
+ <columns>
+ <column flex="1"/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+ <row>
+ <hbox>
+ <checkbox id="useSSL3" label="&useSSL3.label;"
+ accesskey="&useSSL3.accesskey;"
+ preference="security.enable_ssl3"/>
+ </hbox>
+ <hbox>
+ <checkbox id="useTLS1" label="&useTLS1.label;"
+ accesskey="&useTLS1.accesskey;"
+ preference="security.enable_tls"/>
+ </hbox>
+ </row>
+ </rows>
+ </grid>
+ </groupbox>
+
+ <!-- Certificates -->
+ <groupbox id="certificatesGroup">
+ <caption id="CertGroupCaption" label="&certificates.label;"/>
+
+ <description id="CertSelectionDesc" control="certSelection">&certSelection.description;</description>
+
+ <!--
+ The values on these radio buttons may look like l12y issues, but
+ they're not - this preference uses *those strings* as its values.
+ I KID YOU NOT.
+ -->
+ <radiogroup id="certSelection" orient="horizontal" preftype="string"
+ preference="security.default_personal_cert"
+ aria-labelledby="CertGroupCaption CertSelectionDesc">
+ <radio label="&certs.auto;" accesskey="&certs.auto.accesskey;"
+ value="Select Automatically"/>
+ <radio label="&certs.ask;" accesskey="&certs.ask.accesskey;"
+ value="Ask Every Time"/>
+ </radiogroup>
+
+ <separator/>
+
+ <hbox>
+ <button id="viewCertificatesButton"
+ label="&viewCerts.label;" accesskey="&viewCerts.accesskey;"
+ oncommand="gAdvancedPane.showCertificates();"
+ preference="security.disable_button.openCertManager"/>
+ <button id="verificationButton"
+ label="&verify2.label;" accesskey="&verify2.accesskey;"
+ oncommand="gAdvancedPane.showOCSP();"/>
+ <button id="viewSecurityDevicesButton"
+ label="&viewSecurityDevices.label;" accesskey="&viewSecurityDevices.accesskey;"
+ oncommand="gAdvancedPane.showSecurityDevices();"
+ preference="security.disable_button.openDeviceManager"/>
+ </hbox>
+ </groupbox>
+ </tabpanel>
+
+ </tabpanels>
+ </tabbox>
+ </prefpane>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/applicationManager.js
@@ -0,0 +1,98 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#ifdef XP_MACOSX
+var Cc = Components.classes;
+var Ci = Components.interfaces;
+#endif
+
+var gAppManagerDialog = {
+ _removed: [],
+
+ init: function appManager_init() {
+ this.handlerInfo = window.arguments[0];
+
+ var bundle = document.getElementById("appManagerBundle");
+ var contentText;
+ var description = gApplicationsPane._describeType(this.handlerInfo);
+ var key =
+ (this.handlerInfo.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo) ? "handleFile"
+ : "handleProtocol";
+ contentText = bundle.getFormattedString(key, [description]);
+ contentText = bundle.getFormattedString("descriptionApplications", [contentText]);
+ document.getElementById("appDescription").textContent = contentText;
+
+ var list = document.getElementById("appList");
+ var apps = this.handlerInfo.possibleApplicationHandlers.enumerate();
+ while (apps.hasMoreElements()) {
+ let app = apps.getNext();
+ if (!gApplicationsPane.isValidHandlerApp(app))
+ continue;
+
+ app.QueryInterface(Ci.nsIHandlerApp);
+ var item = list.appendItem(app.name);
+ item.setAttribute("image", gApplicationsPane._getIconURLForHandlerApp(app));
+ item.className = "listitem-iconic";
+ item.app = app;
+ }
+
+ list.selectedIndex = 0;
+ },
+
+ onOK: function appManager_onOK() {
+ if (!this._removed.length) {
+ // return early to avoid calling the |store| method.
+ return;
+ }
+
+ for (var i = 0; i < this._removed.length; ++i)
+ this.handlerInfo.removePossibleApplicationHandler(this._removed[i]);
+
+ this.handlerInfo.store();
+ },
+
+ onCancel: function appManager_onCancel() {
+ // do nothing
+ },
+
+ remove: function appManager_remove() {
+ var list = document.getElementById("appList");
+ this._removed.push(list.selectedItem.app);
+ var index = list.selectedIndex;
+ list.removeItemAt(index);
+ if (list.getRowCount() == 0) {
+ // The list is now empty, make the bottom part disappear
+ document.getElementById("appDetails").hidden = true;
+ }
+ else {
+ // Select the item at the same index, if we removed the last
+ // item of the list, select the previous item
+ if (index == list.getRowCount())
+ --index;
+ list.selectedIndex = index;
+ }
+ },
+
+ onSelect: function appManager_onSelect() {
+ var list = document.getElementById("appList");
+ if (!list.selectedItem) {
+ document.getElementById("remove").disabled = true;
+ return;
+ }
+ document.getElementById("remove").disabled = false;
+ var app = list.selectedItem.app;
+ var address = "";
+ if (app instanceof Ci.nsILocalHandlerApp)
+ address = app.executable.path;
+ else if (app instanceof Ci.nsIWebHandlerApp)
+ address = app.uriTemplate;
+ else if (app instanceof Ci.nsIWebContentHandlerInfo)
+ address = app.uri;
+ document.getElementById("appLocation").value = address;
+ var bundle = document.getElementById("appManagerBundle");
+ var appType = app instanceof Ci.nsILocalHandlerApp ? "descriptionLocalApp"
+ : "descriptionWebApp";
+ document.getElementById("appType").value = bundle.getString(appType);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/applicationManager.xul
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/"?>
+
+<!DOCTYPE dialog SYSTEM "chrome://instantbird/locale/preferences/applicationManager.dtd">
+
+<dialog id="appManager"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ buttons="accept,cancel"
+ onload="gAppManagerDialog.init();"
+ ondialogaccept="gAppManagerDialog.onOK();"
+ ondialogcancel="gAppManagerDialog.onCancel();"
+ title="&appManager.title;"
+ style="&appManager.style;"
+ persist="screenX screenY">
+
+ <script type="application/javascript"
+ src="chrome://instantbird/content/preferences/applicationManager.js"/>
+ <script type="application/javascript"
+ src="chrome://instantbird/content/preferences/applications.js"/>
+
+ <commandset id="appManagerCommandSet">
+ <command id="cmd_remove"
+ oncommand="gAppManagerDialog.remove();"
+ disabled="true"/>
+ </commandset>
+
+ <keyset id="appManagerKeyset">
+ <key id="delete" keycode="VK_DELETE" command="cmd_remove"/>
+ </keyset>
+
+ <stringbundleset id="appManagerBundleset">
+ <stringbundle id="appManagerBundle"
+ src="chrome://instantbird/locale/preferences/applicationManager.properties"/>
+ </stringbundleset>
+
+ <description id="appDescription"/>
+ <separator class="thin"/>
+ <hbox flex="1">
+ <listbox id="appList" onselect="gAppManagerDialog.onSelect();" flex="1"/>
+ <vbox>
+ <button id="remove"
+ label="&remove.label;"
+ accesskey="&remove.accesskey;"
+ command="cmd_remove"/>
+ <spacer flex="1"/>
+ </vbox>
+ </hbox>
+ <vbox id="appDetails">
+ <separator class="thin"/>
+ <label id="appType"/>
+ <textbox id="appLocation" readonly="true" class="plain"/>
+ </vbox>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/applications.js
@@ -0,0 +1,1120 @@
+/*
+# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+//****************************************************************************//
+// Constants & Enumeration Values
+
+/*
+#ifdef MOZ_WIDGET_GTK2
+*/
+const ICON_URL_APP = "moz-icon://dummy.exe?size=16";
+/*
+#else
+*/
+const ICON_URL_APP = "chrome://instantbird/skin/preferences/application.png";
+/*
+#endif
+*/
+
+// For CSS. Can be one of "ask" or "save". If absent, the icon URL
+// was set by us to a custom handler icon and CSS should not try to override it.
+const APP_ICON_ATTR_NAME = "appHandlerIcon";
+
+//****************************************************************************//
+// Utilities
+
+function getDisplayNameForFile(aFile) {
+/*
+#ifdef XP_WIN
+*/
+ if (aFile instanceof Ci.nsILocalFileWin) {
+ try {
+ return aFile.getVersionInfoField("FileDescription");
+ }
+ catch(ex) {
+ // fall through to the file name
+ }
+ }
+/*
+#endif
+#ifdef XP_MACOSX
+*/
+ if (aFile instanceof Ci.nsILocalFileMac) {
+ try {
+ return aFile.bundleDisplayName;
+ }
+ catch(ex) {
+ // fall through to the file name
+ }
+ }
+/*
+#endif
+*/
+
+ return Services.io.newFileURI(aFile).QueryInterface(Ci.nsIURL).fileName;
+}
+
+function getLocalHandlerApp(aFile) {
+ var localHandlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"].
+ createInstance(Ci.nsILocalHandlerApp);
+ localHandlerApp.name = getDisplayNameForFile(aFile);
+ localHandlerApp.executable = aFile;
+
+ return localHandlerApp;
+}
+
+/**
+ * An enumeration of items in a JS array.
+ *
+ * FIXME: use ArrayConverter once it lands (bug 380839).
+ *
+ * @constructor
+ */
+function ArrayEnumerator(aItems) {
+ this._index = 0;
+ this._contents = aItems;
+}
+
+ArrayEnumerator.prototype = {
+ _index: 0,
+
+ hasMoreElements: function() {
+ return this._index < this._contents.length;
+ },
+
+ getNext: function() {
+ return this._contents[this._index++];
+ }
+};
+
+//****************************************************************************//
+// HandlerInfoWrapper
+
+/**
+ * This object wraps nsIHandlerInfo with some additional functionality
+ * the Applications prefpane needs to display and allow modification of
+ * the list of handled types.
+ *
+ * We create an instance of this wrapper for each entry we might display
+ * in the prefpane, and we compose the instances from the handler service.
+ *
+ * We don't implement all the original nsIHandlerInfo functionality,
+ * just the stuff that the prefpane needs.
+ *
+ * In theory, all of the custom functionality in this wrapper should get
+ * pushed down into nsIHandlerInfo eventually.
+ */
+function HandlerInfoWrapper(aType, aHandlerInfo) {
+ this._type = aType;
+ this.wrappedHandlerInfo = aHandlerInfo;
+}
+
+HandlerInfoWrapper.prototype = {
+ // The wrapped nsIHandlerInfo object. In general, this object is private,
+ // but there are a couple cases where callers access it directly for things
+ // we haven't (yet?) implemented, so we make it a public property.
+ wrappedHandlerInfo: null,
+
+
+ //**************************************************************************//
+ // Convenience Utils
+
+ _handlerSvc: Cc["@mozilla.org/uriloader/handler-service;1"].
+ getService(Ci.nsIHandlerService),
+
+ _categoryMgr: Cc["@mozilla.org/categorymanager;1"].
+ getService(Ci.nsICategoryManager),
+
+ element: function(aID) {
+ return document.getElementById(aID);
+ },
+
+
+ //**************************************************************************//
+ // nsIHandlerInfo
+
+ // The MIME type or protocol scheme.
+ _type: null,
+ get type() {
+ return this._type;
+ },
+
+ get description() {
+ if (this.wrappedHandlerInfo.description)
+ return this.wrappedHandlerInfo.description;
+
+ if (this.primaryExtension) {
+ var extension = this.primaryExtension.toUpperCase();
+ return this.element("bundlePreferences").getFormattedString("fileEnding",
+ [extension]);
+ }
+
+ return this.type;
+ },
+
+ get preferredApplicationHandler() {
+ return this.wrappedHandlerInfo.preferredApplicationHandler;
+ },
+
+ set preferredApplicationHandler(aNewValue) {
+ this.wrappedHandlerInfo.preferredApplicationHandler = aNewValue;
+
+ // Make sure the preferred handler is in the set of possible handlers.
+ if (aNewValue)
+ this.addPossibleApplicationHandler(aNewValue);
+ },
+
+ get possibleApplicationHandlers() {
+ return this.wrappedHandlerInfo.possibleApplicationHandlers;
+ },
+
+ addPossibleApplicationHandler: function(aNewHandler) {
+ var possibleApps = this.possibleApplicationHandlers.enumerate();
+ while (possibleApps.hasMoreElements()) {
+ if (possibleApps.getNext().equals(aNewHandler))
+ return;
+ }
+ this.possibleApplicationHandlers.appendElement(aNewHandler, false);
+ },
+
+ removePossibleApplicationHandler: function(aHandler) {
+ var defaultApp = this.preferredApplicationHandler;
+ if (defaultApp && aHandler.equals(defaultApp)) {
+ // If the app we remove was the default app, we must make sure
+ // it won't be used anymore
+ this.alwaysAskBeforeHandling = true;
+ this.preferredApplicationHandler = null;
+ }
+
+ var handlers = this.possibleApplicationHandlers;
+ for (var i = 0; i < handlers.length; ++i) {
+ var handler = handlers.queryElementAt(i, Ci.nsIHandlerApp);
+ if (handler.equals(aHandler)) {
+ handlers.removeElementAt(i);
+ break;
+ }
+ }
+ },
+
+ get hasDefaultHandler() {
+ return this.wrappedHandlerInfo.hasDefaultHandler;
+ },
+
+ get defaultDescription() {
+ return this.wrappedHandlerInfo.defaultDescription;
+ },
+
+ // What to do with content of this type.
+ get preferredAction() {
+ // If the action is to use a helper app, but we don't have a preferred
+ // handler app, then switch to using the system default, if any; otherwise
+ // fall back to saving to disk, which is the default action in nsMIMEInfo.
+ // Note: "save to disk" is an invalid value for protocol info objects,
+ // but the alwaysAskBeforeHandling getter will detect that situation
+ // and always return true in that case to override this invalid value.
+ if (this.wrappedHandlerInfo.preferredAction == Ci.nsIHandlerInfo.useHelperApp &&
+ !gApplicationsPane.isValidHandlerApp(this.preferredApplicationHandler)) {
+ if (this.wrappedHandlerInfo.hasDefaultHandler)
+ return Ci.nsIHandlerInfo.useSystemDefault;
+ else
+ return Ci.nsIHandlerInfo.saveToDisk;
+ }
+
+ return this.wrappedHandlerInfo.preferredAction;
+ },
+
+ set preferredAction(aNewValue) {
+ this.wrappedHandlerInfo.preferredAction = aNewValue;
+ },
+
+ get alwaysAskBeforeHandling() {
+ // If this is a protocol type and the preferred action is "save to disk",
+ // which is invalid for such types, then return true here to override that
+ // action. This could happen when the preferred action is to use a helper
+ // app, but the preferredApplicationHandler is invalid, and there isn't
+ // a default handler, so the preferredAction getter returns save to disk
+ // instead.
+ if (!(this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo) &&
+ this.preferredAction == Ci.nsIHandlerInfo.saveToDisk)
+ return true;
+
+ return this.wrappedHandlerInfo.alwaysAskBeforeHandling;
+ },
+
+ set alwaysAskBeforeHandling(aNewValue) {
+ this.wrappedHandlerInfo.alwaysAskBeforeHandling = aNewValue;
+ },
+
+
+ //**************************************************************************//
+ // nsIMIMEInfo
+
+ // The primary file extension associated with this type, if any.
+ get primaryExtension() {
+ try {
+ if (this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo &&
+ this.wrappedHandlerInfo.primaryExtension)
+ return this.wrappedHandlerInfo.primaryExtension;
+ } catch(ex) {}
+
+ return null;
+ },
+
+ //**************************************************************************//
+ // Storage
+
+ store: function() {
+ this._handlerSvc.store(this.wrappedHandlerInfo);
+ },
+
+
+ //**************************************************************************//
+ // Icons
+
+ get smallIcon() {
+ return this._getIcon(16);
+ },
+
+ get largeIcon() {
+ return this._getIcon(32);
+ },
+
+ _getIcon: function(aSize) {
+ if (this.primaryExtension)
+ return "moz-icon://goat." + this.primaryExtension + "?size=" + aSize;
+
+ if (this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo)
+ return "moz-icon://goat?size=" + aSize + "&contentType=" + this.type;
+
+ // FIXME: consider returning some generic icon when we can't get a URL for
+ // one (for example in the case of protocol schemes). Filed as bug 395141.
+ return null;
+ }
+
+};
+
+//****************************************************************************//
+// Prefpane Controller
+
+var gApplicationsPane = {
+ // The set of types the app knows how to handle. A hash of HandlerInfoWrapper
+ // objects, indexed by type.
+ _handledTypes: {},
+
+ // The list of types we can show, sorted by the sort column/direction.
+ // An array of HandlerInfoWrapper objects. We build this list when we first
+ // load the data and then rebuild it when users change a pref that affects
+ // what types we can show or change the sort column/direction.
+ // Note: this isn't necessarily the list of types we *will* show; if the user
+ // provides a filter string, we'll only show the subset of types in this list
+ // that match that string.
+ _visibleTypes: [],
+
+ // A count of the number of times each visible type description appears.
+ // We use these counts to determine whether or not to annotate descriptions
+ // with their types to distinguish duplicate descriptions from each other.
+ // A hash of integer counts, indexed by string description.
+ _visibleTypeDescriptionCount: {},
+
+
+ //**************************************************************************//
+ // Convenience & Performance Shortcuts
+
+ // These get defined by init().
+ _brandShortName : null,
+ _prefsBundle : null,
+ _list : null,
+ _filter : null,
+
+ _mimeSvc : Cc["@mozilla.org/mime;1"].
+ getService(Ci.nsIMIMEService),
+
+ _helperAppSvc : Cc["@mozilla.org/uriloader/external-helper-app-service;1"].
+ getService(Ci.nsIExternalHelperAppService),
+
+ _handlerSvc : Cc["@mozilla.org/uriloader/handler-service;1"].
+ getService(Ci.nsIHandlerService),
+
+
+ //**************************************************************************//
+ // Initialization & Destruction
+
+ init: function() {
+ // Initialize shortcuts to some commonly accessed elements & values.
+ this._brandShortName =
+ document.getElementById("bundleBrand").getString("brandShortName");
+ this._prefsBundle = document.getElementById("bundlePreferences");
+ this._list = document.getElementById("handlersView");
+ this._filter = document.getElementById("filter");
+
+ // Listen for window unload so we can remove our preference observers.
+ window.addEventListener("unload", this);
+
+ // Figure out how we should be sorting the list. We persist sort settings
+ // across sessions, so we can't assume the default sort column/direction.
+ // XXX should we be using the XUL sort service instead?
+ if (document.getElementById("actionColumn").hasAttribute("sortDirection")) {
+ this._sortColumn = document.getElementById("actionColumn");
+ // The typeColumn element always has a sortDirection attribute,
+ // either because it was persisted or because the default value
+ // from the xul file was used. If we are sorting on the other
+ // column, we should remove it.
+ document.getElementById("typeColumn").removeAttribute("sortDirection");
+ }
+ else
+ this._sortColumn = document.getElementById("typeColumn");
+
+ // Load the data and build the list of handlers.
+ // By doing this in a timeout, we let the preferences dialog resize itself
+ // to an appropriate size before we add a bunch of items to the list.
+ // Otherwise, if there are many items, and the Applications prefpane
+ // is the one that gets displayed when the user first opens the dialog,
+ // the dialog might stretch too much in an attempt to fit them all in.
+ // XXX Shouldn't we perhaps just set a max-height on the richlistbox?
+ var _delayedPaneLoad = function(self) {
+ self._loadData();
+ self._rebuildVisibleTypes();
+ self._sortVisibleTypes();
+ self._rebuildView();
+
+ // Notify observers that the UI is now ready
+ Services.obs.notifyObservers(window, "app-handler-pane-loaded", null);
+ };
+ setTimeout(_delayedPaneLoad, 0, this);
+ },
+
+ destroy: function() {
+ window.removeEventListener("unload", this, false);
+ },
+
+
+ //**************************************************************************//
+ // nsISupports
+
+ QueryInterface: function(aIID) {
+ if (aIID.equals(Ci.nsIObserver) ||
+ aIID.equals(Ci.nsIDOMEventListener ||
+ aIID.equals(Ci.nsISupports)))
+ return this;
+
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ },
+
+
+ //**************************************************************************//
+ // nsIObserver
+
+ observe: function (aSubject, aTopic, aData) {
+ // Rebuild the list when there are changes to preferences that influence
+ // whether or not to show certain entries in the list.
+ if (aTopic == "nsPref:changed" && !this._storingAction) {
+ // All the prefs we observe can affect what we display, so we rebuild
+ // the view when any of them changes.
+ this._rebuildView();
+ }
+ },
+
+
+ //**************************************************************************//
+ // nsIDOMEventListener
+
+ handleEvent: function(aEvent) {
+ if (aEvent.type == "unload") {
+ this.destroy();
+ }
+ },
+
+
+ //**************************************************************************//
+ // Composed Model Construction
+
+ _loadData: function() {
+ this._loadApplicationHandlers();
+ },
+
+ /**
+ * Load the set of handlers defined by the application datastore.
+ */
+ _loadApplicationHandlers: function() {
+ var wrappedHandlerInfos = this._handlerSvc.enumerate();
+ while (wrappedHandlerInfos.hasMoreElements()) {
+ let wrappedHandlerInfo =
+ wrappedHandlerInfos.getNext().QueryInterface(Ci.nsIHandlerInfo);
+ let type = wrappedHandlerInfo.type;
+
+ let handlerInfoWrapper;
+ if (type in this._handledTypes)
+ handlerInfoWrapper = this._handledTypes[type];
+ else {
+ handlerInfoWrapper = new HandlerInfoWrapper(type, wrappedHandlerInfo);
+ this._handledTypes[type] = handlerInfoWrapper;
+ }
+
+ handlerInfoWrapper.handledOnlyByPlugin = false;
+ }
+ },
+
+
+ //**************************************************************************//
+ // View Construction
+
+ _rebuildVisibleTypes: function() {
+ // Reset the list of visible types and the visible type description counts.
+ this._visibleTypes = [];
+ this._visibleTypeDescriptionCount = {};
+
+ for (let type in this._handledTypes) {
+ let handlerInfo = this._handledTypes[type];
+
+ // Hide types handled only by plugins.
+ if (handlerInfo.handledOnlyByPlugin)
+ continue;
+
+ // We couldn't find any reason to exclude the type, so include it.
+ this._visibleTypes.push(handlerInfo);
+
+ if (handlerInfo.description in this._visibleTypeDescriptionCount)
+ this._visibleTypeDescriptionCount[handlerInfo.description]++;
+ else
+ this._visibleTypeDescriptionCount[handlerInfo.description] = 1;
+ }
+ },
+
+ _rebuildView: function() {
+ // Clear the list of entries.
+ while (this._list.childNodes.length > 1)
+ this._list.removeChild(this._list.lastChild);
+
+ var visibleTypes = this._visibleTypes;
+
+ // If the user is filtering the list, then only show matching types.
+ if (this._filter.value)
+ visibleTypes = visibleTypes.filter(this._matchesFilter, this);
+
+ for each (let visibleType in visibleTypes) {
+ let item = document.createElement("richlistitem");
+ item.setAttribute("type", visibleType.type);
+ item.setAttribute("typeDescription", this._describeType(visibleType));
+ if (visibleType.smallIcon)
+ item.setAttribute("typeIcon", visibleType.smallIcon);
+ item.setAttribute("actionDescription",
+ this._describePreferredAction(visibleType));
+
+ if (!this._setIconClassForPreferredAction(visibleType, item)) {
+ item.setAttribute("actionIcon",
+ this._getIconURLForPreferredAction(visibleType));
+ }
+
+ this._list.appendChild(item);
+ }
+
+ this._selectLastSelectedType();
+ },
+
+ _matchesFilter: function(aType) {
+ var filterValue = this._filter.value.toLowerCase();
+ return this._describeType(aType).toLowerCase().indexOf(filterValue) != -1 ||
+ this._describePreferredAction(aType).toLowerCase().indexOf(filterValue) != -1;
+ },
+
+ /**
+ * Describe, in a human-readable fashion, the type represented by the given
+ * handler info object. Normally this is just the description provided by
+ * the info object, but if more than one object presents the same description,
+ * then we annotate the duplicate descriptions with the type itself to help
+ * users distinguish between those types.
+ *
+ * @param aHandlerInfo {nsIHandlerInfo} the type being described
+ * @returns {string} a description of the type
+ */
+ _describeType: function(aHandlerInfo) {
+ if (this._visibleTypeDescriptionCount[aHandlerInfo.description] > 1)
+ return this._prefsBundle.getFormattedString("typeDescriptionWithType",
+ [aHandlerInfo.description,
+ aHandlerInfo.type]);
+
+ return aHandlerInfo.description;
+ },
+
+ /**
+ * Describe, in a human-readable fashion, the preferred action to take on
+ * the type represented by the given handler info object.
+ *
+ * XXX Should this be part of the HandlerInfoWrapper interface? It would
+ * violate the separation of model and view, but it might make more sense
+ * nonetheless (f.e. it would make sortTypes easier).
+ *
+ * @param aHandlerInfo {nsIHandlerInfo} the type whose preferred action
+ * is being described
+ * @returns {string} a description of the action
+ */
+ _describePreferredAction: function(aHandlerInfo) {
+ // alwaysAskBeforeHandling overrides the preferred action, so if that flag
+ // is set, then describe that behavior instead. This is
+ // the "alwaysAsk" string.
+ if (aHandlerInfo.alwaysAskBeforeHandling)
+ return this._prefsBundle.getString("alwaysAsk");
+
+ switch (aHandlerInfo.preferredAction) {
+ case Ci.nsIHandlerInfo.saveToDisk:
+ return this._prefsBundle.getString("saveFile");
+
+ case Ci.nsIHandlerInfo.useHelperApp:
+ var preferredApp = aHandlerInfo.preferredApplicationHandler;
+ var name;
+ if (preferredApp instanceof Ci.nsILocalHandlerApp)
+ name = getDisplayNameForFile(preferredApp.executable);
+ else
+ name = preferredApp.name;
+ return this._prefsBundle.getFormattedString("useApp", [name]);
+
+ case Ci.nsIHandlerInfo.handleInternally:
+ // handleInternally looks like either useHelperApp
+ // or useSystemDefault depending on whether or not there's a preferred
+ // handler app.
+ if (this.isValidHandlerApp(aHandlerInfo.preferredApplicationHandler))
+ return aHandlerInfo.preferredApplicationHandler.name;
+
+ return aHandlerInfo.defaultDescription;
+
+ // XXX Why don't we say the app will handle the type internally?
+ // Is it because the app can't actually do that? But if that's true,
+ // then why would a preferredAction ever get set to this value
+ // in the first place?
+
+ case Ci.nsIHandlerInfo.useSystemDefault:
+ return this._prefsBundle.getFormattedString("useDefault",
+ [aHandlerInfo.defaultDescription]);
+ }
+ },
+
+ _selectLastSelectedType: function() {
+ var lastSelectedType = this._list.getAttribute("lastSelectedType");
+ if (!lastSelectedType)
+ return;
+
+ var item = this._list.getElementsByAttribute("type", lastSelectedType)[0];
+ if (!item)
+ return;
+
+ this._list.selectedItem = item;
+ },
+
+ /**
+ * Whether or not the given handler app is valid.
+ *
+ * @param aHandlerApp {nsIHandlerApp} the handler app in question
+ *
+ * @returns {boolean} whether or not it's valid
+ */
+ isValidHandlerApp: function(aHandlerApp) {
+ if (!aHandlerApp)
+ return false;
+
+ if (aHandlerApp instanceof Ci.nsILocalHandlerApp)
+ return this._isValidHandlerExecutable(aHandlerApp.executable);
+
+ if (aHandlerApp instanceof Ci.nsIWebHandlerApp)
+ return aHandlerApp.uriTemplate;
+
+ if (aHandlerApp instanceof Ci.nsIWebContentHandlerInfo)
+ return aHandlerApp.uri;
+
+ return false;
+ },
+
+ _isValidHandlerExecutable: function(aExecutable) {
+ return aExecutable &&
+ aExecutable.exists() &&
+ aExecutable.isExecutable() &&
+// XXXben - we need to compare this with the running instance executable
+// just don't know how to do that via script...
+// XXXmano TBD: can probably add this to nsIShellService
+#ifdef XP_WIN
+#expand aExecutable.leafName != "__MOZ_APP_NAME__.exe";
+#else
+#ifdef XP_MACOSX
+#expand aExecutable.leafName != "__MOZ_MACBUNDLE_NAME__.app";
+#else
+#expand aExecutable.leafName != "__MOZ_APP_NAME__-bin";
+#endif
+#endif
+ },
+
+ /**
+ * Rebuild the actions menu for the selected entry. Gets called by
+ * the richlistitem constructor when an entry in the list gets selected.
+ */
+ rebuildActionsMenu: function() {
+ var typeItem = this._list.selectedItem;
+ var handlerInfo = this._handledTypes[typeItem.type];
+ var menu =
+ document.getAnonymousElementByAttribute(typeItem, "class", "actionsMenu");
+ var menuPopup = menu.menupopup;
+
+ // Clear out existing items.
+ while (menuPopup.hasChildNodes())
+ menuPopup.removeChild(menuPopup.lastChild);
+
+ {
+ var askMenuItem = document.createElement("menuitem");
+ askMenuItem.setAttribute("alwaysAsk", "true");
+ let label = this._prefsBundle.getString("alwaysAsk");
+ askMenuItem.setAttribute("label", label);
+ askMenuItem.setAttribute("tooltiptext", label);
+ askMenuItem.setAttribute(APP_ICON_ATTR_NAME, "ask");
+ menuPopup.appendChild(askMenuItem);
+ }
+
+ // Create a menu item for saving to disk.
+ // Note: this option isn't available to protocol types, since we don't know
+ // what it means to save a URL having a certain scheme to disk.
+ if ((handlerInfo.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo)) {
+ var saveMenuItem = document.createElement("menuitem");
+ saveMenuItem.setAttribute("action", Ci.nsIHandlerInfo.saveToDisk);
+ let label = this._prefsBundle.getString("saveFile");
+ saveMenuItem.setAttribute("label", label);
+ saveMenuItem.setAttribute("tooltiptext", label);
+ saveMenuItem.setAttribute(APP_ICON_ATTR_NAME, "save");
+ menuPopup.appendChild(saveMenuItem);
+ }
+
+ // Add a separator to distinguish these items from the helper app items
+ // that follow them.
+ let menuItem = document.createElement("menuseparator");
+ menuPopup.appendChild(menuItem);
+
+ // Create a menu item for the OS default application, if any.
+ if (handlerInfo.hasDefaultHandler) {
+ var defaultMenuItem = document.createElement("menuitem");
+ defaultMenuItem.setAttribute("action", Ci.nsIHandlerInfo.useSystemDefault);
+ let label = this._prefsBundle.getFormattedString("useDefault",
+ [handlerInfo.defaultDescription]);
+ defaultMenuItem.setAttribute("label", label);
+ defaultMenuItem.setAttribute("tooltiptext", handlerInfo.defaultDescription);
+ defaultMenuItem.setAttribute("image", this._getIconURLForSystemDefault(handlerInfo));
+
+ menuPopup.appendChild(defaultMenuItem);
+ }
+
+ // Create menu items for possible handlers.
+ let preferredApp = handlerInfo.preferredApplicationHandler;
+ let possibleApps = handlerInfo.possibleApplicationHandlers.enumerate();
+ var possibleAppMenuItems = [];
+ while (possibleApps.hasMoreElements()) {
+ let possibleApp = possibleApps.getNext();
+ if (!this.isValidHandlerApp(possibleApp))
+ continue;
+
+ let menuItem = document.createElement("menuitem");
+ menuItem.setAttribute("action", Ci.nsIHandlerInfo.useHelperApp);
+ let label;
+ if (possibleApp instanceof Ci.nsILocalHandlerApp)
+ label = getDisplayNameForFile(possibleApp.executable);
+ else
+ label = possibleApp.name;
+ label = this._prefsBundle.getFormattedString("useApp", [label]);
+ menuItem.setAttribute("label", label);
+ menuItem.setAttribute("tooltiptext", label);
+ menuItem.setAttribute("image", this._getIconURLForHandlerApp(possibleApp));
+
+ // Attach the handler app object to the menu item so we can use it
+ // to make changes to the datastore when the user selects the item.
+ menuItem.handlerApp = possibleApp;
+
+ menuPopup.appendChild(menuItem);
+ possibleAppMenuItems.push(menuItem);
+ }
+
+ // Create a menu item for selecting a local application.
+#ifdef XP_WIN
+ // On Windows, selecting an application to open another application
+ // would be meaningless so we special case executables.
+ var executableType = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService)
+ .getTypeFromExtension("exe");
+ if (handlerInfo.type != executableType)
+#endif
+ {
+ let menuItem = document.createElement("menuitem");
+ menuItem.setAttribute("oncommand", "gApplicationsPane.chooseApp(event)");
+ let label = this._prefsBundle.getString("useOtherApp");
+ menuItem.setAttribute("label", label);
+ menuItem.setAttribute("tooltiptext", label);
+ menuPopup.appendChild(menuItem);
+ }
+
+ // Create a menu item for managing applications.
+ if (possibleAppMenuItems.length) {
+ let menuItem = document.createElement("menuseparator");
+ menuPopup.appendChild(menuItem);
+ menuItem = document.createElement("menuitem");
+ menuItem.setAttribute("oncommand", "gApplicationsPane.manageApp(event)");
+ menuItem.setAttribute("label", this._prefsBundle.getString("manageApp"));
+ menuPopup.appendChild(menuItem);
+ }
+
+ // Select the item corresponding to the preferred action. If the always
+ // ask flag is set, it overrides the preferred action. Otherwise we pick
+ // the item identified by the preferred action (when the preferred action
+ // is to use a helper app, we have to pick the specific helper app item).
+ if (handlerInfo.alwaysAskBeforeHandling)
+ menu.selectedItem = askMenuItem;
+ else switch (handlerInfo.preferredAction) {
+ case Ci.nsIHandlerInfo.handleInternally:
+ menu.selectedItem = internalMenuItem;
+ break;
+ case Ci.nsIHandlerInfo.useSystemDefault:
+ menu.selectedItem = defaultMenuItem;
+ break;
+ case Ci.nsIHandlerInfo.useHelperApp:
+ if (preferredApp)
+ menu.selectedItem =
+ possibleAppMenuItems.filter(function(v) v.handlerApp.equals(preferredApp))[0];
+ break;
+ case Ci.nsIHandlerInfo.saveToDisk:
+ menu.selectedItem = saveMenuItem;
+ break;
+ }
+ },
+
+
+ //**************************************************************************//
+ // Sorting & Filtering
+
+ _sortColumn: null,
+
+ /**
+ * Sort the list when the user clicks on a column header.
+ */
+ sort: function (event) {
+ var column = event.target;
+
+ // If the user clicked on a new sort column, remove the direction indicator
+ // from the old column.
+ if (this._sortColumn && this._sortColumn != column)
+ this._sortColumn.removeAttribute("sortDirection");
+
+ this._sortColumn = column;
+
+ // Set (or switch) the sort direction indicator.
+ if (column.getAttribute("sortDirection") == "ascending")
+ column.setAttribute("sortDirection", "descending");
+ else
+ column.setAttribute("sortDirection", "ascending");
+
+ this._sortVisibleTypes();
+ this._rebuildView();
+ },
+
+ /**
+ * Sort the list of visible types by the current sort column/direction.
+ */
+ _sortVisibleTypes: function() {
+ if (!this._sortColumn)
+ return;
+
+ var t = this;
+
+ function sortByType(a, b) {
+ return t._describeType(a).toLowerCase().
+ localeCompare(t._describeType(b).toLowerCase());
+ }
+
+ function sortByAction(a, b) {
+ return t._describePreferredAction(a).toLowerCase().
+ localeCompare(t._describePreferredAction(b).toLowerCase());
+ }
+
+ switch (this._sortColumn.getAttribute("value")) {
+ case "type":
+ this._visibleTypes.sort(sortByType);
+ break;
+ case "action":
+ this._visibleTypes.sort(sortByAction);
+ break;
+ }
+
+ if (this._sortColumn.getAttribute("sortDirection") == "descending")
+ this._visibleTypes.reverse();
+ },
+
+ /**
+ * Filter the list when the user enters a filter term into the filter field.
+ */
+ filter: function() {
+ this._rebuildView();
+ },
+
+ focusFilterBox: function() {
+ this._filter.focus();
+ this._filter.select();
+ },
+
+
+ //**************************************************************************//
+ // Changes
+
+ onSelectAction: function(aActionItem) {
+ this._storingAction = true;
+
+ try {
+ this._storeAction(aActionItem);
+ }
+ finally {
+ this._storingAction = false;
+ }
+ },
+
+ _storeAction: function(aActionItem) {
+ var typeItem = this._list.selectedItem;
+ var handlerInfo = this._handledTypes[typeItem.type];
+
+ if (aActionItem.hasAttribute("alwaysAsk")) {
+ handlerInfo.alwaysAskBeforeHandling = true;
+ }
+ else if (aActionItem.hasAttribute("action")) {
+ let action = parseInt(aActionItem.getAttribute("action"));
+
+ // Set the preferred application handler.
+ // We leave the existing preferred app in the list when we set
+ // the preferred action to something other than useHelperApp so that
+ // legacy datastores that don't have the preferred app in the list
+ // of possible apps still include the preferred app in the list of apps
+ // the user can choose to handle the type.
+ if (action == Ci.nsIHandlerInfo.useHelperApp)
+ handlerInfo.preferredApplicationHandler = aActionItem.handlerApp;
+
+ // Set the "always ask" flag.
+ handlerInfo.alwaysAskBeforeHandling = false;
+
+ // Set the preferred action.
+ handlerInfo.preferredAction = action;
+ }
+
+ handlerInfo.store();
+
+ // Make sure the handler info object is flagged to indicate that there is
+ // now some user configuration for the type.
+ handlerInfo.handledOnlyByPlugin = false;
+
+ // Update the action label and image to reflect the new preferred action.
+ typeItem.setAttribute("actionDescription",
+ this._describePreferredAction(handlerInfo));
+ if (!this._setIconClassForPreferredAction(handlerInfo, typeItem)) {
+ typeItem.setAttribute("actionIcon",
+ this._getIconURLForPreferredAction(handlerInfo));
+ }
+ },
+
+ manageApp: function(aEvent) {
+ // Don't let the normal "on select action" handler get this event,
+ // as we handle it specially ourselves.
+ aEvent.stopPropagation();
+
+ var typeItem = this._list.selectedItem;
+ var handlerInfo = this._handledTypes[typeItem.type];
+
+ document.documentElement.openSubDialog("chrome://instantbird/content/preferences/applicationManager.xul",
+ "", handlerInfo);
+
+ // Rebuild the actions menu so that we revert to the previous selection,
+ // or "Always ask" if the previous default application has been removed
+ this.rebuildActionsMenu();
+
+ // update the richlistitem too. Will be visible when selecting another row
+ typeItem.setAttribute("actionDescription",
+ this._describePreferredAction(handlerInfo));
+ if (!this._setIconClassForPreferredAction(handlerInfo, typeItem)) {
+ typeItem.setAttribute("actionIcon",
+ this._getIconURLForPreferredAction(handlerInfo));
+ }
+ },
+
+ chooseApp: function(aEvent) {
+ // Don't let the normal "on select action" handler get this event,
+ // as we handle it specially ourselves.
+ aEvent.stopPropagation();
+
+ var handlerApp;
+
+#ifdef XP_WIN
+ var params = {};
+ var handlerInfo = this._handledTypes[this._list.selectedItem.type];
+ params.mimeInfo = handlerInfo.wrappedHandlerInfo;
+ params.title = this._prefsBundle.getString("fpTitleChooseApp");
+ params.description = handlerInfo.description;
+ params.filename = null;
+ params.handlerApp = null;
+
+ window.openDialog("chrome://global/content/appPicker.xul", null,
+ "chrome,modal,centerscreen,titlebar,dialog=yes",
+ params);
+
+ if (params.handlerApp &&
+ params.handlerApp.executable &&
+ params.handlerApp.executable.isFile()) {
+ handlerApp = params.handlerApp;
+
+ // Add the app to the type's list of possible handlers.
+ handlerInfo.addPossibleApplicationHandler(handlerApp);
+ }
+#else
+ var fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
+ var winTitle = this._prefsBundle.getString("fpTitleChooseApp");
+ fp.init(window, winTitle, Ci.nsIFilePicker.modeOpen);
+ fp.appendFilters(Ci.nsIFilePicker.filterApps);
+
+ // Prompt the user to pick an app. If they pick one, and it's a valid
+ // selection, then add it to the list of possible handlers.
+ if (fp.show() == Ci.nsIFilePicker.returnOK && fp.file &&
+ this._isValidHandlerExecutable(fp.file)) {
+ handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"].
+ createInstance(Ci.nsILocalHandlerApp);
+ handlerApp.name = getDisplayNameForFile(fp.file);
+ handlerApp.executable = fp.file;
+
+ // Add the app to the type's list of possible handlers.
+ let handlerInfo = this._handledTypes[this._list.selectedItem.type];
+ handlerInfo.addPossibleApplicationHandler(handlerApp);
+ }
+#endif
+
+ // Rebuild the actions menu whether the user picked an app or canceled.
+ // If they picked an app, we want to add the app to the menu and select it.
+ // If they canceled, we want to go back to their previous selection.
+ this.rebuildActionsMenu();
+
+ // If the user picked a new app from the menu, select it.
+ if (handlerApp) {
+ let typeItem = this._list.selectedItem;
+ let actionsMenu =
+ document.getAnonymousElementByAttribute(typeItem, "class", "actionsMenu");
+ let menuItems = actionsMenu.menupopup.childNodes;
+ for (let i = 0; i < menuItems.length; i++) {
+ let menuItem = menuItems[i];
+ if (menuItem.handlerApp && menuItem.handlerApp.equals(handlerApp)) {
+ actionsMenu.selectedIndex = i;
+ this.onSelectAction(menuItem);
+ break;
+ }
+ }
+ }
+ },
+
+ // Mark which item in the list was last selected so we can reselect it
+ // when we rebuild the list or when the user returns to the prefpane.
+ onSelectionChanged: function() {
+ if (this._list.selectedItem)
+ this._list.setAttribute("lastSelectedType",
+ this._list.selectedItem.getAttribute("type"));
+ },
+
+ _setIconClassForPreferredAction: function(aHandlerInfo, aElement) {
+ // If this returns true, the attribute that CSS sniffs for was set to something
+ // so you shouldn't manually set an icon URI.
+ // This removes the existing actionIcon attribute if any, even if returning false.
+ aElement.removeAttribute("actionIcon");
+
+ if (aHandlerInfo.alwaysAskBeforeHandling) {
+ aElement.setAttribute(APP_ICON_ATTR_NAME, "ask");
+ return true;
+ }
+
+ switch (aHandlerInfo.preferredAction) {
+ case Ci.nsIHandlerInfo.saveToDisk:
+ aElement.setAttribute(APP_ICON_ATTR_NAME, "save");
+ return true;
+
+ case Ci.nsIHandlerInfo.handleInternally:
+ break;
+ }
+ aElement.removeAttribute(APP_ICON_ATTR_NAME);
+ return false;
+ },
+
+ _getIconURLForPreferredAction: function(aHandlerInfo) {
+ switch (aHandlerInfo.preferredAction) {
+ case Ci.nsIHandlerInfo.useSystemDefault:
+ return this._getIconURLForSystemDefault(aHandlerInfo);
+
+ case Ci.nsIHandlerInfo.useHelperApp:
+ let (preferredApp = aHandlerInfo.preferredApplicationHandler) {
+ if (this.isValidHandlerApp(preferredApp))
+ return this._getIconURLForHandlerApp(preferredApp);
+ }
+ break;
+
+ // This should never happen, but if preferredAction is set to some weird
+ // value, then fall back to the generic application icon.
+ default:
+ return ICON_URL_APP;
+ }
+ },
+
+ _getIconURLForHandlerApp: function(aHandlerApp) {
+ if (aHandlerApp instanceof Ci.nsILocalHandlerApp)
+ return this._getIconURLForFile(aHandlerApp.executable);
+
+ if (aHandlerApp instanceof Ci.nsIWebHandlerApp)
+ return this._getIconURLForWebApp(aHandlerApp.uriTemplate);
+
+ if (aHandlerApp instanceof Ci.nsIWebContentHandlerInfo)
+ return this._getIconURLForWebApp(aHandlerApp.uri);
+
+ // We know nothing about other kinds of handler apps.
+ return "";
+ },
+
+ _getIconURLForFile: function(aFile) {
+ var fph = Services.io.getProtocolHandler("file").
+ QueryInterface(Ci.nsIFileProtocolHandler);
+ var urlSpec = fph.getURLSpecFromFile(aFile);
+
+ return "moz-icon://" + urlSpec + "?size=16";
+ },
+
+ _getIconURLForWebApp: function(aWebAppURITemplate) {
+ var uri = Services.io.newURI(aWebAppURITemplate, null, null);
+
+ // Unfortunately we can't use the favicon service to get the favicon,
+ // because the service looks in the annotations table for a record with
+ // the exact URL we give it, and users won't have such records for URLs
+ // they don't visit, and users won't visit the web app's URL template,
+ // they'll only visit URLs derived from that template (i.e. with %s
+ // in the template replaced by the URL of the content being handled).
+
+ if (/^https?/.test(uri.scheme) && Services.prefs.getBoolPref("browser.chrome.favicons"))
+ return uri.prePath + "/favicon.ico";
+
+ return "";
+ },
+
+ _getIconURLForSystemDefault: function(aHandlerInfo) {
+ // Handler info objects for MIME types on some OSes implement a property bag
+ // interface from which we can get an icon for the default app, so if we're
+ // dealing with a MIME type on one of those OSes, then try to get the icon.
+ if ("wrappedHandlerInfo" in aHandlerInfo) {
+ let wrappedHandlerInfo = aHandlerInfo.wrappedHandlerInfo;
+
+ if (wrappedHandlerInfo instanceof Ci.nsIMIMEInfo &&
+ wrappedHandlerInfo instanceof Ci.nsIPropertyBag) {
+ try {
+ let url = wrappedHandlerInfo.getProperty("defaultApplicationIconURL");
+ if (url)
+ return url + "?size=16";
+ }
+ catch(ex) {}
+ }
+ }
+
+ // If this isn't a MIME type object on an OS that supports retrieving
+ // the icon, or if we couldn't retrieve the icon for some other reason,
+ // then use a generic icon.
+ return ICON_URL_APP;
+ }
+
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/applications.xul
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ <!ENTITY % applicationsDTD SYSTEM "chrome://instantbird/locale/preferences/applications.dtd">
+ %brandDTD;
+ %applicationsDTD;
+]>
+
+<overlay id="ApplicationsPaneOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <prefpane id="paneApplications"
+ onpaneload="gApplicationsPane.init();"
+ flex="1">
+
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/applications.js"/>
+
+ <keyset>
+ <key key="&focusSearch1.key;" modifiers="accel" oncommand="gApplicationsPane.focusFilterBox();"/>
+ <key key="&focusSearch2.key;" modifiers="accel" oncommand="gApplicationsPane.focusFilterBox();"/>
+ </keyset>
+
+ <hbox>
+ <textbox id="filter" flex="1"
+ type="search"
+ emptytext="&filter.emptytext;"
+ aria-controls="handlersView"
+ oncommand="gApplicationsPane.filter();"/>
+ </hbox>
+
+ <separator class="thin"/>
+
+ <richlistbox id="handlersView" orient="vertical" persist="lastSelectedType"
+ onselect="gApplicationsPane.onSelectionChanged();">
+ <listheader equalsize="always" style="border: 0; padding: 0; -moz-appearance: none;">
+ <treecol id="typeColumn" label="&typeColumn.label;" value="type"
+ accesskey="&typeColumn.accesskey;" persist="sortDirection"
+ flex="1" onclick="gApplicationsPane.sort(event);"
+ sortDirection="ascending"/>
+ <treecol id="actionColumn" label="&actionColumn2.label;" value="action"
+ accesskey="&actionColumn2.accesskey;" persist="sortDirection"
+ flex="1" onclick="gApplicationsPane.sort(event);"/>
+ </listheader>
+ </richlistbox>
+ </prefpane>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/colors.xul
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+#ifdef XP_MACOSX
+<?xml-stylesheet href="chrome://instantbird/skin/preferences/preferences.css"?>
+#endif
+
+<!DOCTYPE prefwindow SYSTEM "chrome://instantbird/locale/preferences/colors.dtd" >
+
+<prefwindow id="ColorsDialog" type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ title="&colorsDialog.title;"
+ dlgbuttons="accept,cancel"
+#ifdef XP_MACOSX
+ style="width: &window.macWidth; !important;">
+#else
+ style="width: &window.width; !important;">
+#endif
+
+ <prefpane id="ColorsDialogPane">
+
+ <preferences>
+ <preference id="browser.anchor_color" name="browser.anchor_color" type="string"/>
+ <preference id="browser.underline_anchors" name="browser.underline_anchors" type="bool"/>
+ <preference id="browser.display.foreground_color" name="browser.display.foreground_color" type="string"/>
+ <preference id="browser.display.background_color" name="browser.display.background_color" type="string"/>
+ <preference id="browser.display.use_system_colors" name="browser.display.use_system_colors" type="bool"/>
+ </preferences>
+
+ <hbox>
+ <groupbox flex="1">
+ <caption label="&color;"/>
+ <hbox align="center">
+ <label value="&textColor.label;" accesskey="&textColor.accesskey;" control="foregroundtextmenu"/>
+ <spacer flex="1"/>
+ <colorpicker type="button" id="foregroundtextmenu" palettename="standard"
+ preference="browser.display.foreground_color"/>
+ </hbox>
+ <hbox align="center" style="margin-top: 5px">
+ <label value="&backgroundColor.label;" accesskey="&backgroundColor.accesskey;" control="backgroundmenu"/>
+ <spacer flex="1"/>
+ <colorpicker type="button" id="backgroundmenu" palettename="standard"
+ preference="browser.display.background_color"/>
+ </hbox>
+ <separator class="thin"/>
+ <hbox align="center">
+ <checkbox id="browserUseSystemColors" label="&useSystemColors.label;" accesskey="&useSystemColors.accesskey;"
+ preference="browser.display.use_system_colors"/>
+ </hbox>
+ </groupbox>
+
+ <groupbox flex="1">
+ <caption label="&links;"/>
+ <hbox align="center">
+ <label value="&linkColor.label;" accesskey="&linkColor.accesskey;" control="unvisitedlinkmenu"/>
+ <spacer flex="1"/>
+ <colorpicker type="button" id="unvisitedlinkmenu" palettename="standard"
+ preference="browser.anchor_color"/>
+ </hbox>
+ <separator class="thin"/>
+ <hbox align="center">
+ <checkbox id="browserUnderlineAnchors" label="&underlineLinks.label;" accesskey="&underlineLinks.accesskey;"
+ preference="browser.underline_anchors"/>
+ </hbox>
+ </groupbox>
+ </hbox>
+ </prefpane>
+</prefwindow>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/connection.js
@@ -0,0 +1,177 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource:///modules/imServices.jsm");
+
+var gConnectionsDialog = {
+ beforeAccept: function ()
+ {
+ var proxyTypePref = document.getElementById("network.proxy.type");
+ if (proxyTypePref.value == 2) {
+ this.doAutoconfigURLFixup();
+ return true;
+ }
+
+ if (proxyTypePref.value != 1)
+ return true;
+
+ var httpProxyURLPref = document.getElementById("network.proxy.http");
+ var httpProxyPortPref = document.getElementById("network.proxy.http_port");
+ var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
+ if (shareProxiesPref.value) {
+ var proxyPrefs = ["ssl", "ftp", "socks", "gopher"];
+ for (var i = 0; i < proxyPrefs.length; ++i) {
+ var proxyServerURLPref = document.getElementById("network.proxy." + proxyPrefs[i]);
+ var proxyPortPref = document.getElementById("network.proxy." + proxyPrefs[i] + "_port");
+ var backupServerURLPref = document.getElementById("network.proxy.backup." + proxyPrefs[i]);
+ var backupPortPref = document.getElementById("network.proxy.backup." + proxyPrefs[i] + "_port");
+ backupServerURLPref.value = proxyServerURLPref.value;
+ backupPortPref.value = proxyPortPref.value;
+ proxyServerURLPref.value = httpProxyURLPref.value;
+ proxyPortPref.value = httpProxyPortPref.value;
+ }
+ }
+
+ var noProxiesPref = document.getElementById("network.proxy.no_proxies_on");
+ noProxiesPref.value = noProxiesPref.value.replace(/[;]/g,',');
+
+ return true;
+ },
+
+ checkForSystemProxy: function ()
+ {
+ if ("@mozilla.org/system-proxy-settings;1" in Components.classes)
+ document.getElementById("systemPref").removeAttribute("hidden");
+ },
+
+ proxyTypeChanged: function ()
+ {
+ var proxyTypePref = document.getElementById("network.proxy.type");
+
+ // Update http
+ var httpProxyURLPref = document.getElementById("network.proxy.http");
+ httpProxyURLPref.disabled = proxyTypePref.value != 1;
+ var httpProxyPortPref = document.getElementById("network.proxy.http_port");
+ httpProxyPortPref.disabled = proxyTypePref.value != 1;
+
+ // Now update the other protocols
+ this.updateProtocolPrefs();
+
+ var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
+ shareProxiesPref.disabled = proxyTypePref.value != 1;
+
+ var noProxiesPref = document.getElementById("network.proxy.no_proxies_on");
+ noProxiesPref.disabled = proxyTypePref.value != 1;
+
+ var autoconfigURLPref = document.getElementById("network.proxy.autoconfig_url");
+ autoconfigURLPref.disabled = proxyTypePref.value != 2;
+
+ this.updateReloadButton();
+ },
+
+ updateReloadButton: function ()
+ {
+ // Disable the "Reload PAC" button if the selected proxy type is not PAC or
+ // if the current value of the PAC textbox does not match the value stored
+ // in prefs. Likewise, disable the reload button if PAC is not configured
+ // in prefs.
+
+ var typedURL = document.getElementById("networkProxyAutoconfigURL").value;
+ var proxyTypeCur = document.getElementById("network.proxy.type").value;
+
+ var prefs = Services.prefs;
+ var pacURL = prefs.getCharPref("network.proxy.autoconfig_url");
+ var proxyType = prefs.getIntPref("network.proxy.type");
+
+ var disableReloadPref =
+ document.getElementById("pref.advanced.proxies.disable_button.reload");
+ disableReloadPref.disabled =
+ (proxyTypeCur != 2 || proxyType != 2 || typedURL != pacURL);
+ },
+
+ readProxyType: function ()
+ {
+ this.proxyTypeChanged();
+ return undefined;
+ },
+
+ updateProtocolPrefs: function ()
+ {
+ var proxyTypePref = document.getElementById("network.proxy.type");
+ var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
+ var proxyPrefs = ["ssl", "ftp", "socks", "gopher"];
+ for (var i = 0; i < proxyPrefs.length; ++i) {
+ var proxyServerURLPref = document.getElementById("network.proxy." + proxyPrefs[i]);
+ var proxyPortPref = document.getElementById("network.proxy." + proxyPrefs[i] + "_port");
+
+ // Restore previous per-proxy custom settings, if present.
+ if (!shareProxiesPref.value) {
+ var backupServerURLPref = document.getElementById("network.proxy.backup." + proxyPrefs[i]);
+ var backupPortPref = document.getElementById("network.proxy.backup." + proxyPrefs[i] + "_port");
+ if (backupServerURLPref.hasUserValue) {
+ proxyServerURLPref.value = backupServerURLPref.value;
+ backupServerURLPref.reset();
+ }
+ if (backupPortPref.hasUserValue) {
+ proxyPortPref.value = backupPortPref.value;
+ backupPortPref.reset();
+ }
+ }
+
+ proxyServerURLPref.updateElements();
+ proxyPortPref.updateElements();
+ proxyServerURLPref.disabled = proxyTypePref.value != 1 || shareProxiesPref.value;
+ proxyPortPref.disabled = proxyServerURLPref.disabled;
+ }
+ var socksVersionPref = document.getElementById("network.proxy.socks_version");
+ socksVersionPref.disabled = proxyTypePref.value != 1 || shareProxiesPref.value;
+
+ return undefined;
+ },
+
+ readProxyProtocolPref: function (aProtocol, aIsPort)
+ {
+ var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
+ if (shareProxiesPref.value) {
+ var pref = document.getElementById("network.proxy.http" + (aIsPort ? "_port" : ""));
+ return pref.value;
+ }
+
+ var backupPref = document.getElementById("network.proxy.backup." + aProtocol + (aIsPort ? "_port" : ""));
+ return backupPref.hasUserValue ? backupPref.value : undefined;
+ },
+
+ reloadPAC: function ()
+ {
+ Components.classes["@mozilla.org/network/protocol-proxy-service;1"].
+ getService().reloadPAC();
+ },
+
+ doAutoconfigURLFixup: function ()
+ {
+ var autoURL = document.getElementById("networkProxyAutoconfigURL");
+ var autoURLPref = document.getElementById("network.proxy.autoconfig_url");
+ var URIFixup = Components.classes["@mozilla.org/docshell/urifixup;1"]
+ .getService(Components.interfaces.nsIURIFixup);
+ try {
+ autoURLPref.value = autoURL.value = URIFixup.createFixupURI(autoURL.value, 0).spec;
+ } catch(ex) {}
+ },
+
+ readHTTPProxyServer: function ()
+ {
+ var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
+ if (shareProxiesPref.value)
+ this.updateProtocolPrefs();
+ return undefined;
+ },
+
+ readHTTPProxyPort: function ()
+ {
+ var shareProxiesPref = document.getElementById("network.proxy.share_proxy_settings");
+ if (shareProxiesPref.value)
+ this.updateProtocolPrefs();
+ return undefined;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/connection.xul
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<!DOCTYPE prefwindow SYSTEM "chrome://instantbird/locale/preferences/connection.dtd">
+
+<?xml-stylesheet href="chrome://global/skin/"?>
+
+<prefwindow id="ConnectionsDialog" type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ title="&connectionsDialog.title;"
+ dlgbuttons="accept,cancel"
+ onbeforeaccept="return gConnectionsDialog.beforeAccept();"
+ onload="gConnectionsDialog.checkForSystemProxy();"
+#ifdef XP_MACOSX
+ style="width: &window.macWidth; !important;">
+#else
+ style="width: &window.width; !important;">
+#endif
+
+ <prefpane id="ConnectionsDialogPane">
+
+ <preferences>
+ <preference id="network.proxy.type" name="network.proxy.type" type="int" onchange="gConnectionsDialog.proxyTypeChanged();"/>
+ <preference id="network.proxy.http" name="network.proxy.http" type="string"/>
+ <preference id="network.proxy.http_port" name="network.proxy.http_port" type="int"/>
+ <preference id="network.proxy.ftp" name="network.proxy.ftp" type="string"/>
+ <preference id="network.proxy.ftp_port" name="network.proxy.ftp_port" type="int"/>
+ <preference id="network.proxy.ssl" name="network.proxy.ssl" type="string"/>
+ <preference id="network.proxy.ssl_port" name="network.proxy.ssl_port" type="int"/>
+ <preference id="network.proxy.socks" name="network.proxy.socks" type="string"/>
+ <preference id="network.proxy.socks_port" name="network.proxy.socks_port" type="int"/>
+ <preference id="network.proxy.gopher" name="network.proxy.gopher" type="string"/>
+ <preference id="network.proxy.gopher_port" name="network.proxy.gopher_port" type="int"/>
+ <preference id="network.proxy.socks_version" name="network.proxy.socks_version" type="int"/>
+ <preference id="network.proxy.no_proxies_on" name="network.proxy.no_proxies_on" type="string"/>
+ <preference id="network.proxy.autoconfig_url" name="network.proxy.autoconfig_url" type="string"/>
+ <preference id="network.proxy.share_proxy_settings"
+ name="network.proxy.share_proxy_settings"
+ type="bool"/>
+
+ <preference id="pref.advanced.proxies.disable_button.reload"
+ name="pref.advanced.proxies.disable_button.reload"
+ type="bool"/>
+
+ <preference id="network.proxy.backup.ftp" name="network.proxy.backup.ftp" type="string"/>
+ <preference id="network.proxy.backup.ftp_port" name="network.proxy.backup.ftp_port" type="int"/>
+ <preference id="network.proxy.backup.ssl" name="network.proxy.backup.ssl" type="string"/>
+ <preference id="network.proxy.backup.ssl_port" name="network.proxy.backup.ssl_port" type="int"/>
+ <preference id="network.proxy.backup.socks" name="network.proxy.backup.socks" type="string"/>
+ <preference id="network.proxy.backup.socks_port" name="network.proxy.backup.socks_port" type="int"/>
+ <preference id="network.proxy.backup.gopher" name="network.proxy.backup.gopher" type="string"/>
+ <preference id="network.proxy.backup.gopher_port" name="network.proxy.backup.gopher_port" type="int"/>
+ </preferences>
+
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/connection.js"/>
+
+ <groupbox>
+ <caption label="&proxyTitle.label;"/>
+
+ <radiogroup id="networkProxyType" preference="network.proxy.type"
+ onsyncfrompreference="return gConnectionsDialog.readProxyType();">
+ <radio value="0" label="&noProxyTypeRadio.label;" accesskey="&noProxyTypeRadio.accesskey;"/>
+ <radio value="4" label="&WPADTypeRadio.label;" accesskey="&WPADTypeRadio.accesskey;"/>
+ <radio value="5" label="&systemTypeRadio.label;" accesskey="&systemTypeRadio.accesskey;" id="systemPref" hidden="true"/>
+ <radio value="1" label="&manualTypeRadio.label;" accesskey="&manualTypeRadio.accesskey;"/>
+ <grid class="indent" flex="1">
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+ <row align="center">
+ <hbox pack="end">
+ <label value="&http.label;" accesskey="&http.accesskey;" control="networkProxyHTTP"/>
+ </hbox>
+ <hbox align="center">
+ <textbox id="networkProxyHTTP" flex="1"
+ preference="network.proxy.http" onsyncfrompreference="return gConnectionsDialog.readHTTPProxyServer();"/>
+ <label value="&port.label;" accesskey="&HTTPport.accesskey;" control="networkProxyHTTP_Port"/>
+ <textbox id="networkProxyHTTP_Port" type="number" max="65535" size="5"
+ preference="network.proxy.http_port" onsyncfrompreference="return gConnectionsDialog.readHTTPProxyPort();"/>
+ </hbox>
+ </row>
+ <row>
+ <hbox/>
+ <hbox>
+ <checkbox id="shareAllProxies" label="&shareproxy.label;" accesskey="&shareproxy.accesskey;"
+ preference="network.proxy.share_proxy_settings"
+ onsyncfrompreference="return gConnectionsDialog.updateProtocolPrefs();"/>
+ </hbox>
+ </row>
+ <row align="center">
+ <hbox pack="end">
+ <label value="&ssl.label;" accesskey="&ssl.accesskey;" control="networkProxySSL"/>
+ </hbox>
+ <hbox align="center">
+ <textbox id="networkProxySSL" flex="1" preference="network.proxy.ssl"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('ssl', false);"/>
+ <label value="&port.label;" accesskey="&SSLport.accesskey;" control="networkProxySSL_Port"/>
+ <textbox id="networkProxySSL_Port" type="number" max="65535" size="5" preference="network.proxy.ssl_port"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('ssl', true);"/>
+ </hbox>
+ </row>
+ <row align="center">
+ <hbox pack="end">
+ <label value="&ftp.label;" accesskey="&ftp.accesskey;" control="networkProxyFTP"/>
+ </hbox>
+ <hbox align="center">
+ <textbox id="networkProxyFTP" flex="1" preference="network.proxy.ftp"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('ftp', false);"/>
+ <label value="&port.label;" accesskey="&FTPport.accesskey;" control="networkProxyFTP_Port"/>
+ <textbox id="networkProxyFTP_Port" type="number" max="65535" size="5" preference="network.proxy.ftp_port"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('ftp', true);"/>
+ </hbox>
+ </row>
+ <row align="center">
+ <hbox pack="end">
+ <label value="&gopher.label;" accesskey="&gopher.accesskey;" control="networkProxyGopher"/>
+ </hbox>
+ <hbox align="center">
+ <textbox id="networkProxyGopher" flex="1" preference="network.proxy.gopher"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('gopher', false);"/>
+ <label value="&port.label;" accesskey="&gopherPort.accesskey;" control="networkProxyGopher_Port"/>
+ <textbox id="networkProxyGopher_Port" type="number" max="65535" size="5" preference="network.proxy.gopher_port"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('gopher', true);"/>
+ </hbox>
+ </row>
+ <row align="center">
+ <hbox pack="end">
+ <label value="&socks.label;" accesskey="&socks.accesskey;" control="networkProxySOCKS"/>
+ </hbox>
+ <hbox align="center">
+ <textbox id="networkProxySOCKS" flex="1" preference="network.proxy.socks"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('socks', false);"/>
+ <label value="&port.label;" accesskey="&SOCKSport.accesskey;" control="networkProxySOCKS_Port"/>
+ <textbox id="networkProxySOCKS_Port" type="number" max="65535" size="5" preference="network.proxy.socks_port"
+ onsyncfrompreference="return gConnectionsDialog.readProxyProtocolPref('socks', true);"/>
+ </hbox>
+ </row>
+ <row>
+ <spacer/>
+ <radiogroup id="networkProxySOCKSVersion" orient="horizontal"
+ preference="network.proxy.socks_version">
+ <radio id="networkProxySOCKSVersion4" value="4" label="&socks4.label;" accesskey="&socks4.accesskey;" />
+ <radio id="networkProxySOCKSVersion5" value="5" label="&socks5.label;" accesskey="&socks5.accesskey;" />
+ </radiogroup>
+ </row>
+
+ <row align="center">
+ <hbox align="center" pack="end">
+ <label value="&noproxy.label;" accesskey="&noproxy.accesskey;" control="networkProxyNone"/>
+ </hbox>
+ <textbox id="networkProxyNone" preference="network.proxy.no_proxies_on"/>
+ </row>
+ <row>
+ <spacer/>
+ <label value="&noproxyExplain.label;" control="networkProxyNone"/>
+ </row>
+ </rows>
+ </grid>
+ <radio value="2" label="&autoTypeRadio.label;" accesskey="&autoTypeRadio.accesskey;"/>
+ <hbox class="indent" flex="1" align="center">
+ <textbox id="networkProxyAutoconfigURL" flex="1" preference="network.proxy.autoconfig_url"
+ oninput="gConnectionsDialog.updateReloadButton();"/>
+ <button id="autoReload" icon="refresh"
+ label="&reload.label;" accesskey="&reload.accesskey;"
+ oncommand="gConnectionsDialog.reloadPAC();"
+ preference="pref.advanced.proxies.disable_button.reload"/>
+ </hbox>
+ </radiogroup>
+ </groupbox>
+ </prefpane>
+</prefwindow>
+
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/content.js
@@ -0,0 +1,109 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var gContentPane = {
+
+ /**
+ * Initializes the fonts dropdowns displayed in this pane.
+ */
+ init: function ()
+ {
+ this._rebuildFonts();
+ var menulist = document.getElementById("defaultFont");
+ if (menulist.selectedIndex == -1) {
+ menulist.insertItemAt(0, "", "", "");
+ menulist.selectedIndex = 0;
+ }
+ },
+
+ /**
+ * Populates the default font list in UI.
+ */
+ _rebuildFonts: function ()
+ {
+ var langGroupPref = document.getElementById("font.language.group");
+ this._selectDefaultLanguageGroup(langGroupPref.value,
+ this._readDefaultFontTypeForLanguage(langGroupPref.value) == "serif");
+ },
+
+ /**
+ *
+ */
+ _selectDefaultLanguageGroup: function (aLanguageGroup, aIsSerif)
+ {
+ const kFontNameFmtSerif = "font.name.serif.%LANG%";
+ const kFontNameFmtSansSerif = "font.name.sans-serif.%LANG%";
+ const kFontNameListFmtSerif = "font.name-list.serif.%LANG%";
+ const kFontNameListFmtSansSerif = "font.name-list.sans-serif.%LANG%";
+ const kFontSizeFmtVariable = "font.size.variable.%LANG%";
+
+ var prefs = [{ format : aIsSerif ? kFontNameFmtSerif : kFontNameFmtSansSerif,
+ type : "fontname",
+ element : "defaultFont",
+ fonttype : aIsSerif ? "serif" : "sans-serif" },
+ { format : aIsSerif ? kFontNameListFmtSerif : kFontNameListFmtSansSerif,
+ type : "unichar",
+ element : null,
+ fonttype : aIsSerif ? "serif" : "sans-serif" },
+ { format : kFontSizeFmtVariable,
+ type : "int",
+ element : "defaultFontSize",
+ fonttype : null }];
+ var preferences = document.getElementById("contentPreferences");
+ for (var i = 0; i < prefs.length; ++i) {
+ var preference = document.getElementById(prefs[i].format.replace(/%LANG%/, aLanguageGroup));
+ if (!preference) {
+ preference = document.createElement("preference");
+ var name = prefs[i].format.replace(/%LANG%/, aLanguageGroup);
+ preference.id = name;
+ preference.setAttribute("name", name);
+ preference.setAttribute("type", prefs[i].type);
+ preferences.appendChild(preference);
+ }
+
+ if (!prefs[i].element)
+ continue;
+
+ var element = document.getElementById(prefs[i].element);
+ if (element) {
+ element.setAttribute("preference", preference.id);
+
+ if (prefs[i].fonttype)
+ FontBuilder.buildFontList(aLanguageGroup, prefs[i].fonttype, element);
+
+ preference.setElementValue(element);
+ }
+ }
+ },
+
+ /**
+ * Returns the type of the current default font for the language denoted by
+ * aLanguageGroup.
+ */
+ _readDefaultFontTypeForLanguage: function (aLanguageGroup)
+ {
+ const kDefaultFontType = "font.default.%LANG%";
+ var defaultFontTypePref = kDefaultFontType.replace(/%LANG%/, aLanguageGroup);
+ var preference = document.getElementById(defaultFontTypePref);
+ if (!preference) {
+ preference = document.createElement("preference");
+ preference.id = defaultFontTypePref;
+ preference.setAttribute("name", defaultFontTypePref);
+ preference.setAttribute("type", "string");
+ preference.setAttribute("onchange", "gContentPane._rebuildFonts();");
+ document.getElementById("contentPreferences").appendChild(preference);
+ }
+ return preference.value;
+ },
+
+ /**
+ * Displays the colors dialog, where default web page/link/etc. colors can be
+ * configured.
+ */
+ configureColors: function ()
+ {
+ document.documentElement.openSubDialog("chrome://instantbird/content/preferences/colors.xul",
+ "", null);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/content.xul
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ <!ENTITY % contentDTD SYSTEM "chrome://instantbird/locale/preferences/content.dtd">
+ %brandDTD;
+ %contentDTD;
+]>
+
+<overlay id="ContentPaneOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <prefpane id="paneContent"
+ onpaneload="gContentPane.init();">
+
+ <preferences id="contentPreferences">
+ <!--XXX buttons prefs -->
+ <preference id="browser.display.foreground_color" name="browser.display.foreground_color" type="string"/>
+ <preference id="messenger.options.filterMode" name="messenger.options.filterMode" type="int"/>
+ <preference id="messenger.conversations.sendFormat" name="messenger.conversations.sendFormat" type="bool"/>
+ <preference id="font.language.group" name="font.language.group" type="wstring"
+ onchange="gContentPane._rebuildFonts();"/>
+ </preferences>
+
+ <script type="application/javascript" src="chrome://mozapps/content/preferences/fontbuilder.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/content.js"/>
+
+ <!-- Formattings -->
+ <groupbox id="formattingsGroup">
+ <caption label="&formattings.label;"/>
+
+ <label control="filterLevel" accesskey="&filterLevel.accesskey;">&filterLevel.label;</label>
+ <menulist id="filterLevel" preference="messenger.options.filterMode">
+ <menupopup>
+ <menuitem value="2" label="&filterLevelAll;"/>
+ <menuitem value="1" label="&filterLevelBasic;"/>
+ <menuitem value="0" label="&filterLevelNone;"/>
+ </menupopup>
+ </menulist>
+ </groupbox>
+
+ <!-- Fonts and Colors -->
+ <groupbox id="fontsGroup">
+ <caption label="&fontsAndColors.label;"/>
+ <hbox align="center">
+ <label control="defaultFont" accesskey="&defaultFont.accesskey;">&defaultFont.label;</label>
+ <menulist id="defaultFont" flex="1"/>
+ <label control="defaultFontSize" accesskey="&defaultSize.accesskey;">&defaultSize.label;</label>
+ <menulist id="defaultFontSize">
+ <menupopup>
+ <menuitem value="9" label="9"/>
+ <menuitem value="10" label="10"/>
+ <menuitem value="11" label="11"/>
+ <menuitem value="12" label="12"/>
+ <menuitem value="13" label="13"/>
+ <menuitem value="14" label="14"/>
+ <menuitem value="15" label="15"/>
+ <menuitem value="16" label="16"/>
+ <menuitem value="17" label="17"/>
+ <menuitem value="18" label="18"/>
+ <menuitem value="20" label="20"/>
+ <menuitem value="22" label="22"/>
+ <menuitem value="24" label="24"/>
+ <menuitem value="26" label="26"/>
+ <menuitem value="28" label="28"/>
+ <menuitem value="30" label="30"/>
+ <menuitem value="32" label="32"/>
+ <menuitem value="34" label="34"/>
+ <menuitem value="36" label="36"/>
+ <menuitem value="40" label="40"/>
+ <menuitem value="44" label="44"/>
+ <menuitem value="48" label="48"/>
+ <menuitem value="56" label="56"/>
+ <menuitem value="64" label="64"/>
+ <menuitem value="72" label="72"/>
+ </menupopup>
+ </menulist>
+ </hbox>
+ <hbox align="center">
+ <label control="defaultColor" accesskey="&defaultColor.accesskey;">&defaultColor.label;</label>
+ <colorpicker type="button" id="defaultColor" palettename="standard"
+ preference="browser.display.foreground_color"/>
+ <spacer flex="1"/>
+ <button id="colors" icon="select-color"
+ label="&advancedColors.label;"
+ accesskey="&advancedColors.accesskey;"
+ oncommand="gContentPane.configureColors();"/>
+ </hbox>
+ <checkbox id="formatOutgoingMessages" label="&formatOutgoingMessages.label;"
+ accesskey="&formatOutgoingMessages.accesskey;"
+ preference="messenger.conversations.sendFormat"/>
+ </groupbox>
+
+ </prefpane>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/handlers.css
@@ -0,0 +1,25 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+richlistitem {
+ -moz-binding: url("chrome://instantbird/content/preferences/handlers.xml#handler");
+}
+
+richlistitem[selected="true"] {
+ -moz-binding: url("chrome://instantbird/content/preferences/handlers.xml#handler-selected");
+}
+
+/**
+ * Make the icons appear.
+ * Note: we display the icon box for every item whether or not it has an icon
+ * so the labels of all the items align vertically.
+ */
+.actionsMenu > menupopup > menuitem > .menu-iconic-left {
+ display: -moz-box;
+ min-width: 16px;
+}
+
+listitem.offlineapp {
+ -moz-binding: url("chrome://instantbird/content/preferences/handlers.xml#offlineapp");
+}
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/handlers.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ <!ENTITY % applicationsDTD SYSTEM "chrome://instantbird/locale/preferences/applications.dtd">
+ %brandDTD;
+ %applicationsDTD;
+]>
+
+<bindings id="handlerBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="handler-base" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <implementation>
+ <property name="type" readonly="true">
+ <getter>
+ return this.getAttribute("type");
+ </getter>
+ </property>
+ </implementation>
+ </binding>
+
+ <binding id="handler" extends="chrome://instantbird/content/preferences/handlers.xml#handler-base">
+ <content>
+ <xul:hbox flex="1" equalsize="always">
+ <xul:hbox flex="1" align="center" xbl:inherits="tooltiptext=typeDescription">
+ <xul:image src="moz-icon://goat?size=16" class="typeIcon"
+ xbl:inherits="src=typeIcon" height="16" width="16"/>
+ <xul:label flex="1" crop="end" xbl:inherits="value=typeDescription"/>
+ </xul:hbox>
+ <xul:hbox flex="1" align="center" xbl:inherits="tooltiptext=actionDescription">
+ <xul:image xbl:inherits="src=actionIcon" height="16" width="16" class="actionIcon"/>
+ <xul:label flex="1" crop="end" xbl:inherits="value=actionDescription"/>
+ </xul:hbox>
+ </xul:hbox>
+ </content>
+ </binding>
+
+ <binding id="handler-selected" extends="chrome://instantbird/content/preferences/handlers.xml#handler-base">
+ <content>
+ <xul:hbox flex="1" equalsize="always">
+ <xul:hbox flex="1" align="center" xbl:inherits="tooltiptext=typeDescription">
+ <xul:image src="moz-icon://goat?size=16" class="typeIcon"
+ xbl:inherits="src=typeIcon" height="16" width="16"/>
+ <xul:label flex="1" crop="end" xbl:inherits="value=typeDescription"/>
+ </xul:hbox>
+ <xul:hbox flex="1">
+ <xul:menulist class="actionsMenu" flex="1" crop="end" selectedIndex="1"
+ xbl:inherits="tooltiptext=actionDescription"
+ oncommand="gApplicationsPane.onSelectAction(event.originalTarget)">
+ <xul:menupopup/>
+ </xul:menulist>
+ </xul:hbox>
+ </xul:hbox>
+ </content>
+
+ <implementation>
+ <constructor>
+ gApplicationsPane.rebuildActionsMenu();
+ </constructor>
+ </implementation>
+
+ </binding>
+
+ <binding id="offlineapp"
+ extends="chrome://global/content/bindings/listbox.xml#listitem">
+ <content>
+ <children>
+ <xul:listcell xbl:inherits="label=host"/>
+ <xul:listcell xbl:inherits="label=usage"/>
+ </children>
+ </content>
+ </binding>
+
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/main.js
@@ -0,0 +1,34 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+if (!("Core" in window))
+ Components.utils.import("resource:///modules/ibCore.jsm");
+
+var gMainPane = {
+ _pane: null,
+
+ /**
+ * Initialization of this.
+ */
+ init: function ()
+ {
+ this._pane = document.getElementById("paneMain");
+ },
+
+ /**
+ * Displays the Add-ons Manager.
+ */
+ showAccountsMgr: function ()
+ {
+ Core.showAccounts();
+ },
+
+ /**
+ * Displays the Add-ons Manager.
+ */
+ showAddonsMgr: function ()
+ {
+ Core.showAddons();
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/main.xul
@@ -0,0 +1,141 @@
+<?xml version="1.0"?>
+
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<!DOCTYPE overlay [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ <!ENTITY % mainDTD SYSTEM "chrome://instantbird/locale/preferences/main.dtd">
+ %brandDTD;
+ %mainDTD;
+]>
+
+<overlay id="MainPaneOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <prefpane id="paneMain" onpaneload="gMainPane.init();">
+
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/main.js"/>
+
+ <preferences id="mainPreferences">
+ <preference id="messenger.startup.action" name="messenger.startup.action" type="int"/>
+ <preference id="messenger.options.playSounds.blist" name="messenger.options.playSounds.blist" type="bool"/>
+ <preference id="messenger.options.playSounds.message" name="messenger.options.playSounds.message" type="bool"/>
+ <preference id="messenger.options.getAttentionOnNewMessages" name="messenger.options.getAttentionOnNewMessages" type="bool"/>
+#ifdef XP_MACOSX
+ <preference id="messenger.options.showUnreadCountInDock" name="messenger.options.showUnreadCountInDock" type="bool"/>
+#else
+ <preference id="extensions.mintrayr.alwaysShowTrayIcon" name="extensions.mintrayr.alwaysShowTrayIcon" type="bool"/>
+ <preference id="extensions.mintrayr.minimizeon" name="extensions.mintrayr.minimizeon" type="int"/>
+#endif
+ <preference id="messenger.options.notifyOfNewMessages" name="messenger.options.notifyOfNewMessages" type="bool"/>
+ </preferences>
+
+ <!-- Startup -->
+ <groupbox id="startupGroup">
+ <caption label="&startup.label;"/>
+
+ <hbox align="center">
+ <label value="&startupAction.label;" accesskey="&startupAction.accesskey;"
+ control="messengerStartupAction"/>
+ <menulist id="messengerStartupAction" preference="messenger.startup.action">
+ <menupopup>
+ <menuitem label="&startupOffline.label;" value="0"/>
+ <menuitem label="&startupConnectAuto.label;" value="1"/>
+ </menupopup>
+ </menulist>
+ </hbox>
+ </groupbox>
+
+
+ <groupbox id="accountsMgrGroup" orient="horizontal" align="center">
+ <caption label="&accountsMgr.label;"/>
+
+ <description control="manageAccounts"
+#ifdef XP_WIN
+ flex="1">&manageAccountsDescWin.label;</description>
+#else
+ flex="1">&manageAccountsDescUnix2.label;</description>
+#endif
+ <button id="manageAccounts" label="&manageAccounts.label;"
+ accesskey="&manageAccounts.accesskey;"
+ oncommand="gMainPane.showAccountsMgr();"/>
+ </groupbox>
+
+ <groupbox id="newMessageGroup">
+ <caption label="&newMessage.label;"/>
+ <checkbox id="getAttention"
+#ifndef XP_MACOSX
+ label="&getAttention.label;"
+ accesskey="&getAttention.accesskey;"
+#else
+ label="&getAttentionMac.label;"
+ accesskey="&getAttentionMac.accesskey;"
+#endif
+ preference="messenger.options.getAttentionOnNewMessages"/>
+#ifdef XP_MACOSX
+ <checkbox id="unreadCountInDock"
+ label="&unreadCountInDock.label;"
+ accesskey="&unreadCountInDock.accesskey;"
+ preference="messenger.options.showUnreadCountInDock"/>
+#endif
+ <checkbox id="notifyOfNewMessages"
+ label="¬ifyOfNewMessages.label;"
+ accesskey="¬ifyOfNewMessages.accesskey;"
+ preference="messenger.options.notifyOfNewMessages"/>
+ </groupbox>
+
+ <groupbox id="soundsGroup">
+ <caption label="&sounds.label;"/>
+ <checkbox id="playSoundsMessage" label="&playSoundsMessage.label;"
+ accesskey="&playSoundsMessage.accesskey;"
+ preference="messenger.options.playSounds.message"/>
+ <checkbox id="playSoundsBlist" label="&playSoundsBlist.label;"
+ accesskey="&playSoundsBlist.accesskey;"
+ preference="messenger.options.playSounds.blist"/>
+ </groupbox>
+
+#ifndef XP_MACOSX
+ <groupbox id="systrayGroup">
+ <caption label="&systray.label;"/>
+
+ <checkbox label="&alwaysShowTrayIcon.label;"
+ accesskey="&alwaysShowTrayIcon.accesskey;"
+ preference="extensions.mintrayr.alwaysShowTrayIcon"/>
+ <hbox align="center">
+ <label value="&minimizeToTray.label;"
+ accesskey="&minimizeToTray.accesskey;"
+ control="minimizeOn"/>
+ <menulist id="minimizeOn" preference="extensions.mintrayr.minimizeon">
+ <menupopup>
+ <menuitem label="&minimizeOn.never.label;" value="0"/>
+ <menuitem label="&minimizeOn.minimize.label;" value="1"/>
+ <menuitem label="&minimizeOn.close.label;" value="2"/>
+ <menuitem label="&minimizeOn.both.label;" value="3"/>
+ </menupopup>
+ </menulist>
+ </hbox>
+ </groupbox>
+
+#endif
+ <hbox class="bottomBox">
+ <groupbox id="addonsMgrGroup" orient="horizontal" align="center" flex="1">
+ <caption label="&addonsMgr.label;"/>
+
+ <description control="manageAddons"
+#ifdef XP_WIN
+ flex="1">&manageAddonsDescWin.label;</description>
+#else
+ flex="1">&manageAddonsDescUnix2.label;</description>
+#endif
+ <button id="manageAddons" label="&manageAddons.label;"
+ accesskey="&manageAddons.accesskey;"
+ oncommand="gMainPane.showAddonsMgr();"/>
+ </groupbox>
+ </hbox>
+
+ </prefpane>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/messagestyle.js
@@ -0,0 +1,177 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+let jsProtoHelper = {};
+Components.utils.import("resource:///modules/jsProtoHelper.jsm", jsProtoHelper);
+
+function Conversation(aName)
+{
+ this._name = aName;
+ this._observers = [];
+ let now = new Date();
+ this._date = new Date(now.getFullYear(), now.getMonth(), now.getDate(),
+ 10, 42, 22) * 1000;
+}
+Conversation.prototype = {
+ __proto__: jsProtoHelper.GenericConvIMPrototype,
+ account: {protocol: {name: "Fake Protocol"},
+ alias: "", name: "Fake Account",
+ statusInfo: Services.core.globalUserStatus}
+};
+
+// Message style tooltips use this.
+function getBrowser() document.getElementById("previewbrowser");
+
+var previewObserver = {
+ _loaded: false,
+ load: function() {
+ gThemePane.buildThemeList("messagestyle");
+
+ let makeDate = function(aDateString) {
+ let array = aDateString.split(":");
+ let now = new Date();
+ return (new Date(now.getFullYear(), now.getMonth(), now.getDate(),
+ array[0], array[1], array[2])) / 1000;
+ };
+ let bundle = document.getElementById("themesBundle");
+ let msg = {};
+ ["nick1", "buddy1", "nick2", "buddy2",
+ "message1", "message2", "message3"].forEach(function(aText) {
+ msg[aText] = bundle.getString(aText);
+ });
+ let conv = new Conversation(msg.nick2);
+ const Message = jsProtoHelper.Message;
+ conv.messages = [
+ new Message(msg.buddy1, msg.message1, {outgoing: true, _alias: msg.nick1, time: makeDate("10:42:22"), _conversation: conv}),
+ new Message(msg.buddy1, msg.message2, {outgoing: true, _alias: msg.nick1, time: makeDate("10:42:25"), _conversation: conv}),
+ new Message(msg.buddy2, msg.message3, {incoming: true, _alias: msg.nick2, time: makeDate("10:43:01"), _conversation: conv})
+ ];
+ previewObserver.conv = conv;
+
+ let themeName = document.getElementById("messagestyle-themename");
+ if (themeName.value && !themeName.selectedItem)
+ themeName.value = themeName.value;
+ previewObserver.browser = document.getElementById("previewbrowser");
+ document.getElementById("showHeaderCheckbox")
+ .addEventListener("CheckboxStateChange",
+ previewObserver.showHeaderChanged);
+ previewObserver.displayTheme(themeName.value);
+ this._loaded = true;
+ },
+
+ showHeaderChanged: function() {
+ if (!previewObserver._loaded)
+ return;
+
+ previewObserver.theme.showHeader = this.checked;
+ previewObserver.reloadPreview();
+ },
+
+ currentThemeChanged: function() {
+ if (!this._loaded)
+ return;
+
+ let currentTheme = document.getElementById("messagestyle-themename").value;
+ if (!currentTheme)
+ return;
+
+ this.displayTheme(currentTheme);
+ },
+
+ _ignoreVariantChange: false,
+ currentVariantChanged: function() {
+ if (!this._loaded || this._ignoreVariantChange)
+ return;
+
+ let variant = document.getElementById("themevariant").value;
+ if (!variant)
+ return;
+
+ this.theme.variant = variant;
+ this.reloadPreview();
+ },
+
+ displayTheme: function(aTheme) {
+ try {
+ this.theme = getThemeByName(aTheme);
+ }
+ catch(e) {
+ document.getElementById("previewDeck").selectedIndex = 0;
+ return;
+ }
+
+ let menulist = document.getElementById("themevariant");
+ if (menulist.firstChild)
+ menulist.removeChild(menulist.firstChild);
+ let popup = menulist.appendChild(document.createElement("menupopup"));
+ let variants = getThemeVariants(this.theme);
+
+ let defaultVariant = "";
+ if (("DefaultVariant" in this.theme.metadata) &&
+ variants.indexOf(this.theme.metadata.DefaultVariant) != -1)
+ defaultVariant = this.theme.metadata.DefaultVariant.replace(/_/g, " ");
+
+ let defaultText = defaultVariant;
+ if (!defaultText && ("DisplayNameForNoVariant" in this.theme.metadata))
+ defaultText = this.theme.metadata.DisplayNameForNoVariant;
+ // if the name in the metadata is 'Default', use the localized version
+ if (!defaultText || defaultText.toLowerCase() == "default")
+ defaultText = document.getElementById("themesBundle").getString("default");
+
+ let menuitem = document.createElement("menuitem");
+ menuitem.setAttribute("label", defaultText);
+ menuitem.setAttribute("value", "default");
+ popup.appendChild(menuitem);
+ popup.appendChild(document.createElement("menuseparator"));
+
+ variants.sort().forEach(function(aVariantName) {
+ let displayName = aVariantName.replace(/_/g, " ");
+ if (displayName != defaultVariant) {
+ let menuitem = document.createElement("menuitem");
+ menuitem.setAttribute("label", displayName);
+ menuitem.setAttribute("value", aVariantName);
+ popup.appendChild(menuitem);
+ }
+ });
+ this._ignoreVariantChange = true;
+ if (!this._loaded)
+ menulist.value = this.theme.variant = menulist.value;
+ else {
+ menulist.value = this.theme.variant; // (reset to "default")
+ document.getElementById("paneThemes").userChangedValue(menulist);
+ }
+ this._ignoreVariantChange = false;
+
+ // disable the variant menulist if there's no variant, or only one
+ // which is the default
+ menulist.disabled = variants.length == 0 ||
+ variants.length == 1 && defaultVariant;
+
+ document.getElementById("showHeaderCheckbox").disabled =
+ !this.theme.html.hasOwnProperty("header");
+
+ this.reloadPreview();
+ document.getElementById("previewDeck").selectedIndex = 1;
+ },
+
+ reloadPreview: function() {
+ this.browser.init(this.conv);
+ this.browser._theme = this.theme;
+ Services.obs.addObserver(this, "conversation-loaded", false);
+ },
+
+ observe: function(aSubject, aTopic, aData) {
+ if (aTopic != "conversation-loaded" || aSubject != this.browser)
+ return;
+
+ // Display all queued messages. Use a timeout so that message text
+ // modifiers can be added with observers for this notification.
+ setTimeout(function() {
+ for each (let message in previewObserver.conv.messages)
+ aSubject.appendMessage(message, false);
+ }, 0);
+
+ Services.obs.removeObserver(this, "conversation-loaded");
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/preferences.xul
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<?xml-stylesheet href="chrome://global/skin/global.css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/preferences/preferences.css"?>
+
+<!-- XXX This should be in applications.xul, but bug 393953 means putting it
+ - there causes the Applications pane not to work the first time you open
+ - the Preferences dialog in a browsing session, so we work around the problem
+ - by putting it here instead.
+ -->
+<?xml-stylesheet href="chrome://instantbird/content/preferences/handlers.css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/preferences/applications.css"?>
+<!-- XXX and this should be in themes.xul. Same issue and workaround... -->
+<?xml-stylesheet href="chrome://instantbird/content/instantbird.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/preferences/smiley.css" type="text/css"?>
+
+#ifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+#endif
+
+<!DOCTYPE prefwindow [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+<!ENTITY % preferencesDTD SYSTEM "chrome://instantbird/locale/preferences/preferences.dtd">
+%brandDTD;
+%preferencesDTD;
+#ifdef XP_MACOSX
+<!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+%instantbirdDTD;
+#endif
+]>
+
+#ifdef XP_WIN
+#define USE_WIN_TITLE_STYLE
+#endif
+#ifdef XP_OS2
+#define USE_WIN_TITLE_STYLE
+#endif
+
+<prefwindow type="prefwindow"
+ id="BrowserPreferences"
+ windowtype="Messenger:Preferences"
+#ifdef USE_WIN_TITLE_STYLE
+ title="&prefWindow.titleWin;"
+#else
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+ title="&prefWindow.titleGNOME;"
+#endif
+#endif
+#endif
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+#ifdef USE_WIN_TITLE_STYLE
+ style="&prefWinMinSize.styleWin2;">
+#else
+#ifdef XP_MACOSX
+ style="&prefWinMinSize.styleMac;">
+#else
+ style="&prefWinMinSize.styleGNOME;">
+#endif
+#endif
+
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+
+#ifdef XP_MACOSX
+#include ../menus.xul.inc
+#endif
+
+ <stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/>
+ <stringbundle id="bundlePreferences"
+ src="chrome://instantbird/locale/preferences/preferences.properties"/>
+
+ <prefpane id="paneMain" label="&paneGeneral.title;"
+ src="chrome://instantbird/content/preferences/main.xul"/>
+ <prefpane id="paneTabs" label="&paneTabs.title;"
+ src="chrome://instantbird/content/preferences/tabs.xul"/>
+ <prefpane id="paneContent" label="&paneContent.title;"
+ src="chrome://instantbird/content/preferences/content.xul"/>
+ <prefpane id="paneApplications" label="&paneApplications.title;"
+ src="chrome://instantbird/content/preferences/applications.xul"/>
+ <prefpane id="panePrivacy" label="&panePrivacy.title;"
+ src="chrome://instantbird/content/preferences/privacy.xul"/>
+ <prefpane id="paneThemes" label="&paneThemes.title;"
+ src="chrome://instantbird/content/preferences/themes.xul"/>
+ <prefpane id="paneAdvanced" label="&paneAdvanced.title;"
+ src="chrome://instantbird/content/preferences/advanced.xul"/>
+
+</prefwindow>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/privacy.js
@@ -0,0 +1,169 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var gPrivacyPane = {
+ init: function ()
+ {
+ this.updateDisabledState();
+ this._initMasterPasswordUI();
+ },
+
+ updateDisabledState: function ()
+ {
+ let broadcaster = document.getElementById("idleReportingEnabled");
+ if (document.getElementById("messenger.status.reportIdle").value) {
+ broadcaster.removeAttribute("disabled");
+ this.updateMessageDisabledState();
+ }
+ else
+ broadcaster.setAttribute("disabled", "true");
+ },
+
+ updateMessageDisabledState: function ()
+ {
+ let textbox = document.getElementById("defaultIdleAwayMessage");
+ if (document.getElementById("messenger.status.awayWhenIdle").value)
+ textbox.removeAttribute("disabled");
+ else
+ textbox.setAttribute("disabled", "true");
+ },
+
+ openLogFolder: function ()
+ {
+ let Cc = Components.classes;
+ let Ci = Components.interfaces;
+
+ // Log folder is "'profile directory'/logs"
+ var logFolder = Services.dirsvc.get("ProfD", Ci.nsILocalFile);
+ logFolder.append("logs");
+
+ try {
+ logFolder.reveal();
+ } catch (e) {
+ // Adapted the workaround of Firefox' Download Manager for some *ix systems
+ let parent = logFolder.parent.QueryInterface(Ci.nsILocalFile);
+ if (!parent)
+ return;
+
+ try {
+ // "Double click" the parent directory to show where the file should be
+ parent.launch();
+ } catch (e) {
+ // If launch also fails (probably because it's not implemented), let the
+ // OS handler try to open the parent
+ let uri = Services.io.newFileURI(parent);
+ let protocolSvc = Cc["@mozilla.org/uriloader/external-protocol-service;1"].
+ getService(Ci.nsIExternalProtocolService);
+ protocolSvc.loadUrl(uri);
+ }
+ }
+ },
+
+ /**
+ * Initializes master password UI: the "use master password" checkbox, selects
+ * the master password button to show, and enables/disables it as necessary.
+ * The master password is controlled by various bits of NSS functionality,
+ * so the UI for it can't be controlled by the normal preference bindings.
+ */
+ _initMasterPasswordUI: function ()
+ {
+ var noMP = !this._masterPasswordSet();
+
+ document.getElementById("changeMasterPassword").disabled = noMP;
+
+ document.getElementById("useMasterPassword").checked = !noMP;
+ },
+
+
+ /**
+ * Returns true if the user has a master password set and false otherwise.
+ */
+ _masterPasswordSet: function ()
+ {
+ const Cc = Components.classes, Ci = Components.interfaces;
+ var secmodDB = Cc["@mozilla.org/security/pkcs11moduledb;1"].
+ getService(Ci.nsIPKCS11ModuleDB);
+ var slot = secmodDB.findSlotByName("");
+ if (slot) {
+ var status = slot.status;
+ var hasMP = status != Ci.nsIPKCS11Slot.SLOT_UNINITIALIZED &&
+ status != Ci.nsIPKCS11Slot.SLOT_READY;
+ return hasMP;
+ } else {
+ // XXX I have no bloody idea what this means
+ return false;
+ }
+ },
+
+
+ /**
+ * Enables/disables the master password button depending on the state of the
+ * "use master password" checkbox, and prompts for master password removal
+ * if one is set.
+ */
+ updateMasterPasswordButton: function ()
+ {
+ var checkbox = document.getElementById("useMasterPassword");
+ var button = document.getElementById("changeMasterPassword");
+ button.disabled = !checkbox.checked;
+
+ // unchecking the checkbox should try to immediately remove the master
+ // password, because it's impossible to non-destructively remove the master
+ // password used to encrypt all the passwords without providing it (by
+ // design), and it would be extremely odd to pop up that dialog when the
+ // user closes the prefwindow and saves his settings
+ if (!checkbox.checked)
+ this._removeMasterPassword();
+ else
+ this.changeMasterPassword();
+
+ this._initMasterPasswordUI();
+ },
+
+ /**
+ * Displays the "remove master password" dialog to allow the user to remove
+ * the current master password. When the dialog is dismissed, master password
+ * UI is automatically updated.
+ */
+ _removeMasterPassword: function ()
+ {
+ const Cc = Components.classes, Ci = Components.interfaces;
+ var secmodDB = Cc["@mozilla.org/security/pkcs11moduledb;1"].
+ getService(Ci.nsIPKCS11ModuleDB);
+ if (secmodDB.isFIPSEnabled) {
+ var promptService = Cc["@mozilla.org/embedcomp/prompt-service;1"].
+ getService(Ci.nsIPromptService);
+ var bundle = document.getElementById("bundlePreferences");
+ promptService.alert(window,
+ bundle.getString("pw_change_failed_title"),
+ bundle.getString("pw_change2empty_in_fips_mode"));
+ }
+ else {
+ document.documentElement.openSubDialog("chrome://mozapps/content/preferences/removemp.xul",
+ "", null);
+ }
+ this._initMasterPasswordUI();
+ },
+
+ /**
+ * Displays a dialog in which the master password may be changed.
+ */
+ changeMasterPassword: function ()
+ {
+ document.documentElement.openSubDialog("chrome://mozapps/content/preferences/changemp.xul",
+ "", null);
+ this._initMasterPasswordUI();
+ },
+
+ /**
+ * Shows the sites where the user has saved passwords and the associated
+ * login information.
+ */
+ showPasswords: function ()
+ {
+ document.documentElement.openWindow("Toolkit:PasswordManager",
+ "chrome://passwordmgr/content/passwordManager.xul",
+ "", null);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/privacy.xul
@@ -0,0 +1,115 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+<!ENTITY % privacyDTD SYSTEM "chrome://instantbird/locale/preferences/privacy.dtd">
+%brandDTD;
+%privacyDTD;
+]>
+
+<overlay id="PrivacyPaneOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+
+ <prefpane id="panePrivacy" onpaneload="gPrivacyPane.init();">
+
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/privacy.js"/>
+
+ <preferences id="privacyPreferences">
+ <preference id="purple.conversations.im.send_typing" name="purple.conversations.im.send_typing" type="bool"/>
+ <preference id="messenger.status.reportIdle" name="messenger.status.reportIdle" type="bool"
+ onchange="gPrivacyPane.updateDisabledState();"/>
+ <preference id="messenger.status.timeBeforeIdle" name="messenger.status.timeBeforeIdle" type="int"/>
+ <preference id="messenger.status.awayWhenIdle" name="messenger.status.awayWhenIdle" type="bool"
+ onchange="gPrivacyPane.updateMessageDisabledState();"/>
+ <preference id="messenger.status.defaultIdleAwayMessage" name="messenger.status.defaultIdleAwayMessage" type="wstring"/>
+ <preference id="purple.logging.log_chats" name="purple.logging.log_chats" type="bool"/>
+ <preference id="purple.logging.log_ims" name="purple.logging.log_ims" type="bool"/>
+ <preference id="purple.logging.log_system" name="purple.logging.log_system" type="bool"/>
+ <preference id="pref.privacy.disable_button.view_passwords" name="pref.privacy.disable_button.view_passwords" type="bool"/>
+ </preferences>
+
+ <broadcaster id="idleReportingEnabled"/>
+
+ <!-- Status -->
+ <groupbox id="statusGroup">
+ <caption label="&status.label;"/>
+ <hbox align="center">
+ <checkbox id="reportIdle" label="&reportIdleAfter.label;"
+ accesskey="&reportIdleAfter.accesskey;"
+ preference="messenger.status.reportIdle"/>
+ <textbox id="timeBeforeAway" type="number" min="1"
+ observes="idleReportingEnabled"
+ preference="messenger.status.timeBeforeIdle"
+ onsyncfrompreference="var elt = document.getElementById(this.getAttribute('preference'));
+ return (elt.instantApply ? elt.valueFromPreferences : elt.value) / 60;"
+ onsynctopreference="return this.value * 60;"/>
+ <label value="&idleTime;" control="timeBeforeAway"/>
+ </hbox>
+ <vbox class="indent">
+ <checkbox id="autoAway" label="&andSetStatusToAway.label;"
+ observes="idleReportingEnabled"
+ accesskey="&andSetStatusToAway.accesskey;"
+ preference="messenger.status.awayWhenIdle"/>
+ <textbox id="defaultIdleAwayMessage" class="indent"
+ observes="idleReportingEnabled"
+ preference="messenger.status.defaultIdleAwayMessage"/>
+ </vbox>
+ <separator/>
+ <checkbox id="sendTyping" label="&sendTyping.label;"
+ accesskey="&sendTyping.accesskey;"
+ preference="purple.conversations.im.send_typing"/>
+ </groupbox>
+
+ <!-- Logs -->
+ <groupbox id="logsGroup">
+ <caption label="&logsGroup.label;"/>
+ <checkbox id="logConversations" label="&logConversations.label;"
+ accesskey="&logConversations.accesskey;"
+ preference="purple.logging.log_ims"
+ onsynctopreference="document.getElementById('purple.logging.log_chats').value = this.checked;"/>
+ <checkbox id="logSystem" label="&logSystem.label;"
+ accesskey="&logSystem.accesskey;"
+ preference="purple.logging.log_system"/>
+ <separator class="thin"/>
+ <hbox align="center">
+ <description control="openLogFolder"
+ flex="1">&logShowFolder.description;</description>
+ <button id="openLogFolder" label="&logShowFolderButton.label;"
+ accesskey="&logShowFolderButton.accesskey;"
+ oncommand="gPrivacyPane.openLogFolder();"/>
+ </hbox>
+ </groupbox>
+
+ <!-- Passwords -->
+ <groupbox id="passwordsGroup" orient="vertical">
+ <caption label="&passwords.label;"/>
+
+ <description>&savedPasswords.intro;</description>
+ <hbox>
+ <spacer flex="1"/>
+ <button label="&savedPasswords.label;" accesskey="&savedPasswords.accesskey;"
+ oncommand="gPrivacyPane.showPasswords();"
+ preference="pref.privacy.disable_button.view_passwords"/>
+ </hbox>
+
+ <separator class="thin"/>
+
+ <description>&masterPassword.intro;</description>
+ <hbox>
+ <checkbox id="useMasterPassword" flex="1"
+ label="&useMasterPassword.label;" accesskey="&useMasterPassword.accesskey;"
+ oncommand="gPrivacyPane.updateMasterPasswordButton();"/>
+
+ <button id="changeMasterPassword"
+ label="&changeMasterPassword.label;" accesskey="&changeMasterPassword.accesskey;"
+ oncommand="gPrivacyPane.changeMasterPassword();"/>
+ </hbox>
+ </groupbox>
+
+ </prefpane>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/smiley.css
@@ -0,0 +1,33 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+smiley {
+ -moz-binding: url("chrome://instantbird/content/preferences/smiley.xml#smiley");
+}
+
+listheader {
+ border: 0;
+ padding: 0;
+ -moz-appearance: none;
+}
+
+treecol {
+ -moz-binding: url("chrome://instantbird/content/preferences/smiley.xml#treecol");
+}
+
+smiley:nth-child(odd) {
+ background-color: -moz-oddtreerow;
+}
+
+.smileyTextCodes {
+ font-family: monospace;
+}
+
+.smileyImageBox {
+ -moz-box-align: center;
+}
+
+.smileyImage {
+ margin: 1px 1em;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/smiley.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings>
+
+<bindings id="smileyBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="smiley" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:hbox flex="1" equalsize="always">
+ <xul:hbox flex="1" class="smileyImageBox">
+ <xul:image class="smileyImage" xbl:inherits="src=smileyImage"/>
+ </xul:hbox>
+ <xul:label flex="1" class="smileyTextCodes" crop="end" xbl:inherits="value=smileyTextCodes"/>
+ </xul:hbox>
+ </content>
+ </binding>
+
+ <!-- chrome://global/content/bindings/tree.xml#treecol simplified so
+ that we don't throw JS errors from the onclick handler -->
+ <binding id="treecol" extends="chrome://global/content/bindings/tree.xml#tree-base">
+ <content>
+ <xul:label class="treecol-text" xbl:inherits="crop,value=label" flex="1" crop="right"/>
+ </content>
+ <implementation implements="nsIAccessibleProvider">
+ <property name="accessibleType" readonly="true">
+ <getter>
+ <![CDATA[
+ return Components.interfaces.nsIAccessibleProvider.XULTreeColumnItem;
+ ]]>
+ </getter>
+ </property>
+ </implementation>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/smileys.js
@@ -0,0 +1,41 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var smileysPreview = {
+ _loaded: false,
+ load: function() {
+ Components.utils.import("resource:///modules/imSmileys.jsm");
+
+ gThemePane.buildThemeList("emoticons");
+ let themeName = document.getElementById("emoticons-themename");
+ // force the setter to execute again now that the menuitem exists
+ themeName.value = themeName.value;
+ this._loaded = true;
+ this.displayCurrentTheme();
+ },
+
+ displayCurrentTheme: function() {
+ if (!this._loaded)
+ return;
+
+ let themeName = document.getElementById("emoticons-themename").value;
+ this.smileyList = getSmileyList(themeName);
+ let list = document.getElementById("smileysPreview");
+ let item = list.firstChild.nextSibling;
+ while (item) {
+ let next = item.nextSibling;
+ list.removeChild(item);
+ item = next;
+ }
+
+ if (this.smileyList) {
+ for each (let smiley in this.smileyList) {
+ let item = document.createElement("smiley");
+ item.setAttribute("smileyImage", smiley.src);
+ item.setAttribute("smileyTextCodes", smiley.textCodes.join(" "));
+ list.appendChild(item);
+ }
+ }
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/tabs.js
@@ -0,0 +1,18 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var gTabsPane = {
+ init: function ()
+ {
+ this.updateMUCWindowSetting();
+ document.getElementById("warnCloseMultiple").hidden =
+ !document.getElementById("messenger.conversations.alwaysClose").value;
+ },
+
+ updateMUCWindowSetting: function ()
+ {
+ document.getElementById("useSeparateWindowsForMUCs").disabled =
+ !document.getElementById("messenger.conversations.openInTabs").value;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/tabs.xul
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+<!ENTITY % tabsDTD SYSTEM "chrome://instantbird/locale/preferences/tabs.dtd">
+%tabsDTD;
+]>
+
+<overlay id="TabsPaneOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <prefpane id="paneTabs" onpaneload="gTabsPane.init();">
+
+ <preferences id="tabsPreferences">
+ <preference id="messenger.conversations.openInTabs" name="messenger.conversations.openInTabs" type="bool"
+ onchange="gTabsPane.updateMUCWindowSetting();"/>
+ <preference id="messenger.conversations.useSeparateWindowsForMUCs" name="messenger.conversations.useSeparateWindowsForMUCs" type="bool"/>
+ <preference id="browser.tabs.autoHide" name="browser.tabs.autoHide" type="bool" inverted="true"/>
+ <preference id="browser.tabs.warnOnClose" name="browser.tabs.warnOnClose" type="bool"/>
+ <preference id="messenger.conversations.alwaysClose" name="messenger.conversations.alwaysClose" type="bool"/>
+ </preferences>
+
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/tabs.js"/>
+
+ <!-- XXX flex below is a hack because wrapping checkboxes don't reflow
+ properly; see bug 349098 -->
+ <vbox id="tabPrefsBox" align="start" flex="1">
+ <checkbox id="openInTabs" label="&enableTabbedConversations.label;"
+ accesskey="&enableTabbedConversations.accesskey;"
+ preference="messenger.conversations.openInTabs"/>
+ <checkbox id="useSeparateWindowsForMUCs" class="indent"
+ label="&groupMUCsInSeparateWindow.label;"
+ accesskey="&groupMUCsInSeparateWindow.accesskey;"
+ preference="messenger.conversations.useSeparateWindowsForMUCs"/>
+ <checkbox id="showTabBar" label="&showTabBar.label;"
+ accesskey="&showTabBar.accesskey;"
+ preference="browser.tabs.autoHide"/>
+ <checkbox id="warnCloseMultiple" label="&warnCloseMultipleTabs.label;"
+ accesskey="&warnCloseMultipleTabs.accesskey;"
+ preference="browser.tabs.warnOnClose"/>
+ </vbox>
+
+ </prefpane>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/themes.js
@@ -0,0 +1,105 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+const PREF_EXTENSIONS_GETMOREMESSAGESTYLESURL = "extensions.getMoreMessageStylesURL";
+const PREF_EXTENSIONS_GETMOREEMOTICONSURL = "extensions.getMoreEmoticonsURL";
+
+var gThemePane = {
+ init: function (){
+ AddonManager.getAllAddons(function(aAddons) {
+ gThemePane.extensionList = aAddons;
+ previewObserver.load();
+ smileysPreview.load();
+ });
+ gThemePane.setGetMore("Emoticons");
+ gThemePane.setGetMore("MessageStyles");
+ },
+
+ /* Set the correct URL for the "Get more ..."-links */
+ setGetMore: function (aType){
+ var prefURL;
+ switch(aType){
+ case "Emoticons":
+ prefURL = PREF_EXTENSIONS_GETMOREEMOTICONSURL;
+ break;
+ case "MessageStyles":
+ prefURL = PREF_EXTENSIONS_GETMOREMESSAGESTYLESURL;
+ break;
+ default:
+ return;
+ }
+
+ var getMore = document.getElementById("getMore" + aType);
+ var showGetMore = false;
+ const nsIPrefBranch2 = Components.interfaces.nsIPrefBranch2;
+ if (Services.prefs.getPrefType(prefURL) != nsIPrefBranch2.PREF_INVALID) {
+ try {
+ var getMoreURL = Components.classes["@mozilla.org/toolkit/URLFormatterService;1"]
+ .getService(Components.interfaces.nsIURLFormatter)
+ .formatURLPref(prefURL);
+ getMore.setAttribute("getMoreURL", getMoreURL);
+ showGetMore = getMoreURL != "about:blank";
+ }
+ catch (e) { }
+ }
+ getMore.hidden = !showGetMore;
+ },
+
+ /* Create the drop down list for emoticons and messagestyles;
+ this will take care of disabled and incompatible themes and the case
+ that there are no custom styles installed.
+ */
+ buildThemeList: function (aThemeType) {
+ let extensionTypeRegExp = new RegExp("^" + aThemeType + "-");
+ let themeList =
+ this.getExtensionList()
+ .filter(function(item) extensionTypeRegExp.test(item.id))
+ .sort(function(item1, item2) {
+ let name1 = item1.name.toLowerCase();
+ let name2 = item2.name.toLowerCase();
+ return name1 < name2 ? -1 : name1 > name2 ? 1 : 0;
+ });
+ if (!themeList.length)
+ return;
+
+ document.getElementById("no-" + aThemeType + "-menuitem")
+ .setAttribute("hidden", "true");
+
+ let themeNameRegExp = new RegExp("^" + aThemeType + "-([^@]+)@.*","");
+ let themeBundle = document.getElementById("themesBundle");
+ let menulist = document.getElementById(aThemeType + "-themename");
+ themeList.forEach(function(aItem) {
+ let label = aItem.name;
+ if (aItem.userDisabled) {
+ label += " " + themeBundle.getString("disabled");
+ }
+ else if (!aItem.isCompatible) {
+ label += " " + themeBundle.getString("incompatible");
+ }
+
+ let item =
+ menulist.appendItem(label, aItem.id.replace(themeNameRegExp, "$1"));
+
+ // Set it to deactivated if it is not active;
+ // this is independent from the reason displayed.
+ if (!aItem.isActive || aItem.userDisabled)
+ item.setAttribute("disabled", "true");
+ });
+ },
+
+ openURL: function (aURL) {
+ Components.classes["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Components.interfaces.nsIExternalProtocolService)
+ .loadUrl(Services.io.newURI(aURL, null, null));
+ },
+
+ // Getting the extension list is slow, return a cached copy of the list
+ getExtensionList: function () {
+ if (!this.extensionList)
+ throw "The add-ons list should be loaded by now...";
+ return this.extensionList;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/preferences/themes.xul
@@ -0,0 +1,134 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE overlay [
+ <!ENTITY % themesDTD SYSTEM "chrome://instantbird/locale/preferences/themes.dtd">
+ %themesDTD;
+]>
+
+<overlay id="ThemesPaneOverlay"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <prefpane id="paneThemes"
+ onpaneload="gThemePane.init();"
+ flex="1">
+
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/messagestyle.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/smileys.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/preferences/themes.js"/>
+
+ <preferences id="themesPreferences">
+ <preference id="messenger.options.messagesStyle.theme" name="messenger.options.messagesStyle.theme" type="string"/>
+ <preference id="messenger.options.messagesStyle.variant" name="messenger.options.messagesStyle.variant" type="string"/>
+ <preference id="messenger.options.messagesStyle.showHeader" name="messenger.options.messagesStyle.showHeader" type="bool"/>
+ <preference id="messenger.options.emoticonsTheme" name="messenger.options.emoticonsTheme" type="string"/>
+ </preferences>
+
+ <stringbundleset id="stringbundleset">
+ <stringbundle id="themesBundle"
+ src="chrome://instantbird/locale/preferences/themes.properties"/>
+ </stringbundleset>
+
+ <tabbox flex="1">
+ <tabs>
+ <tab label="&messageStyleTab.title;"/>
+ <tab label="&emoticonsTab.title;"/>
+ <!--<tab label="Sounds"/>-->
+ </tabs>
+ <tabpanels flex="1">
+ <tabpanel orient="vertical" flex="1">
+ <hbox align="baseline">
+ <label value="&messageStyleTheme.label;" control="themename"
+ accesskey="&messageStyleTheme.accesskey;"/>
+ <menulist id="messagestyle-themename"
+ flex="1" crop="end"
+ preference="messenger.options.messagesStyle.theme"
+ onselect="previewObserver.currentThemeChanged();">
+ <menupopup id="theme-menupopup">
+ <menuitem id="bubbles-menuitem"
+ label="&messageStyleBubblesTheme.label;"
+ value="bubbles"/>
+ <menuitem id="dark-menuitem"
+ label="&messageStyleDarkTheme.label;"
+ value="dark"/>
+ <menuitem id="papersheets-menuitem"
+ label="&messageStylePaperSheetsTheme.label;"
+ value="papersheets"/>
+ <menuitem id="simple-menuitem"
+ label="&messageStyleSimpleTheme.label;"
+ value="simple"/>
+ <menuseparator/>
+ <menuitem id="no-messagestyle-menuitem" label="&messageStyleNoExtraThemes.label;"
+ disabled="true"/>
+ </menupopup>
+ </menulist>
+ <separator orient="vertical" class="thin"/>
+ <label id="getMoreMessageStyles" class="text-link" value="&messageStyleGetMore.label;"
+ onclick="if (event.button == 0) { gThemePane.openURL(this.getAttribute('getMoreURL')); }"/>
+ </hbox>
+ <separator class="thin"/>
+ <label value="&messageStylePreview.label;"/>
+ <tooltip id="aHTMLTooltip" page="true"/>
+ <deck flex="1" id="previewDeck" selectedIndex="1">
+ <vbox flex="1" id="noPreviewScreen" align="center" pack="center">
+ <hbox id="noPreviewBox" align="top">
+ <image id="noPreviewImage"/>
+ <vbox id="noPreviewInnerBox" flex="1">
+ <label id="noPreviewTitle" value="&messageStyleNoPreview.title;"/>
+ <description id="noAccountDesc">&messageStyleNoPreview.description;</description>
+ </vbox>
+ </hbox>
+ </vbox>
+ <browser flex="1" id="previewbrowser" type="content-conversation" tooltip="aHTMLTooltip"/>
+ </deck>
+ <hbox align="baseline">
+ <label value="&messageStyleVariant.label;" control="themevariant"
+ accesskey="&messageStyleVariant.accesskey;"/>
+ <menulist id="themevariant"
+ preference="messenger.options.messagesStyle.variant"
+ onselect="previewObserver.currentVariantChanged();"/>
+ </hbox>
+ <checkbox id="showHeaderCheckbox" label="&messageStyleShowHeader.label;"
+ accesskey="&messageStyleShowHeader.accesskey;"
+ preference="messenger.options.messagesStyle.showHeader"/>
+ </tabpanel>
+
+ <tabpanel orient="vertical" flex="1">
+ <hbox align="baseline">
+ <label value="&emoticonsTheme.label;" control="smileythemename"
+ accesskey="&emoticonsTheme.accesskey;"/>
+ <menulist id="emoticons-themename"
+ flex="1" crop="end"
+ preference="messenger.options.emoticonsTheme"
+ onselect="smileysPreview.displayCurrentTheme();">
+ <menupopup id="theme-menupopup">
+ <menuitem id="default-menuitem"
+ label="&emoticonsDefaultTheme.label;"
+ value="default"/>
+ <menuitem id="none-menuitem"
+ label="&emoticonsDisabled.label;"
+ value="none"/>
+ <menuseparator/>
+ <menuitem id="no-emoticons-menuitem" label="&emoticonsNoExtraThemes.label;"
+ disabled="true"/>
+ </menupopup>
+ </menulist>
+ <separator orient="vertical" class="thin"/>
+ <label id="getMoreEmoticons" class="text-link" value="&emoticonsGetMore.label;"
+ onclick="if (event.button == 0) { gThemePane.openURL(this.getAttribute('getMoreURL')); }"/>
+ </hbox>
+ <separator class="thin"/>
+ <description>&emoticonsPreview.description;</description>
+ <richlistbox orient="vertical" id="smileysPreview">
+ <listheader equalsize="always">
+ <treecol id="imageColumn" label="&emoticonsImageColumn.label;" flex="1"/>
+ <treecol id="textCodesColumn" label="&emoticonsTextCodesColumn.label;" flex="1"/>
+ </listheader>
+ </richlistbox>
+ </tabpanel>
+ </tabpanels>
+ </tabbox>
+ </prefpane>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/proxies.css
@@ -0,0 +1,7 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+richlistitem[proxy] {
+ -moz-binding: url("chrome://instantbird/content/proxy.xml#proxy");
+}
new file mode 100644
--- /dev/null
+++ b/im/content/proxies.js
@@ -0,0 +1,176 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var gProxies = {
+ load: function proxy_load() {
+
+ // check the environment
+ // see what the global settings are
+ // build a list of existing proxies
+
+ var pcs = Cc["@instantbird.org/libpurple/core;1"]
+ .getService(Ci.purpleICoreService);
+
+ var proxyInfoCtr = Components.Constructor("@instantbird.org/purple/proxyinfo;1",
+ "purpleIProxyInfo");
+ var proxyInfo;
+ var account = window.arguments[0];
+ if (account) {
+ proxyInfo = new proxyInfoCtr();
+ proxyInfo.type = Ci.purpleIProxyInfo.useGlobal;
+ document.getElementById("useGlobal").proxy = proxyInfo;
+ var globalProxy = pcs.globalProxy;
+ document.getElementById("globalProxy").textContent =
+ this.getProxyDescription(globalProxy);
+ }
+ else {
+ let global = document.getElementById("useGlobal");
+ global.parentNode.removeChild(global);
+ document.getElementById("useAsGlobalSettings").collapsed = true;
+ document.getElementById("proxyDialogHeader").collapsed = true;
+ }
+
+ proxyInfo = new proxyInfoCtr();
+ proxyInfo.type = Ci.purpleIProxyInfo.noProxy;
+ document.getElementById("noProxy").proxy = proxyInfo;
+
+ var useEnv = document.getElementById("useEnvironment");
+ proxyInfo = new proxyInfoCtr();
+ proxyInfo.type = Ci.purpleIProxyInfo.useEnvVar;
+ useEnv.proxy = proxyInfo;
+ var environment = Components.classes["@mozilla.org/process/environment;1"]
+ .getService(Ci.nsIEnvironment);
+ var envproxy = environment.get("HTTP_PROXY") ||
+ environment.get("http_proxy") ||
+ environment.get("HTTPPROXY");
+ if (envproxy)
+ document.getElementById("envProxy").textContent = envproxy;
+
+ var proxies = getIter(pcs.getProxies());
+ var proxyList = document.getElementById("proxylist");
+ for (let proxy in proxies) {
+ let item = document.createElement("richlistitem");
+ item.setAttribute("proxy", "true");
+ proxyList.insertBefore(item, document.getElementById("newProxy"));
+ item.proxy = proxy;
+ }
+
+ var key = null;
+ if (!account)
+ key = pcs.globalProxy.key;
+ else if (account.proxy)
+ key = account.proxy.key;
+
+ if (key) {
+ var items = proxyList.children;
+ for (let i = 0; i < items.length; ++i) {
+ if (items[i].proxy.key == key) {
+ proxyList.selectedItem = items[i];
+ break;
+ }
+ }
+ if (key != "global")
+ document.getElementById("useAsGlobalSettings").checked = false;
+ }
+ },
+
+ // Note: this function should not be called for a purpleIProxyInfo
+ // instance pointing to the Global Proxy
+ getProxyDescription: function proxy_description(aProxy) {
+ var type = aProxy.type;
+ var bundle = document.getElementById("proxiesBundle");
+
+ if (type == Ci.purpleIProxyInfo.noProxy)
+ return bundle.getString("proxies.directConnection");
+
+ if (type == Ci.purpleIProxyInfo.useEnvVar)
+ return bundle.getString("proxies.useEnvironment");
+
+ // At this point, we should have either a SOCKS or HTTP proxy.
+ var result;
+ if (type == Ci.purpleIProxyInfo.httpProxy)
+ result = bundle.getString("proxies.http");
+ else if (type == Ci.purpleIProxyInfo.socks4Proxy)
+ result = bundle.getString("proxies.socks4");
+ else if (type == Ci.purpleIProxyInfo.socks5Proxy)
+ result = bundle.getString("proxies.socks5");
+ else
+ throw "Unknown proxy type";
+
+ if (result)
+ result += " ";
+
+ if (aProxy.username)
+ result += aProxy.username + "@";
+
+ return result + aProxy.host + ":" + aProxy.port;
+ },
+
+ onSelect: function proxy_select() {
+ let selectedItem = document.getElementById("proxylist").selectedItem;
+ if (selectedItem) {
+ document.getElementById("useAsGlobalSettings").disabled =
+ selectedItem.id == "useGlobal";
+ }
+ },
+
+ getValue: function proxy_getValue(aId) {
+ return document.getElementById(aId).value;
+ },
+
+ accept: function proxy_accept() {
+ var pcs = Cc["@instantbird.org/libpurple/core;1"]
+ .getService(Ci.purpleICoreService);
+ var promptService = Services.prompt;
+ var item = document.getElementById("proxylist").selectedItem;
+ if (item.id == "newProxy") {
+ var type = this.getValue("proxyType");
+ var host = this.getValue("hostname");
+ var port = this.getValue("port");
+ if (!host || !port) {
+ promptService.alert(window, bundle.getString("proxies.alert.invalidInput.title"),
+ bundle.getString("proxies.alert.invalidInput.message"));
+ return false;
+ }
+ var user = this.getValue("username");
+ var pass = this.getValue("password");
+ var proxies = getIter(pcs.getProxies());
+ for (let proxy in proxies) {
+ if (proxy.type == type && proxy.port == port &&
+ proxy.host == host && proxy.username == user) {
+ if (proxy.password == pass) {
+ item.proxy = proxy;
+ }
+ else {
+ if (promptService.confirm(window, bundle.getString("proxies.confirm.passwordUpdate.title"),
+ bundle.getString("proxies.confirm.passwordUpdate.message"))) {
+ proxy.password = pass;
+ item.proxy = proxy;
+ }
+ else
+ return false;
+ }
+ break;
+ }
+ }
+ if (!item.proxy)
+ item.proxy = pcs.createProxy(type, host, port, user, pass);
+ }
+
+ var account = window.arguments[0];
+ if (!account) {
+ pcs.globalProxy = item.proxy;
+ return true;
+ }
+
+ var globalCheckbox = document.getElementById("useAsGlobalSettings");
+ if (!globalCheckbox.disabled && globalCheckbox.checked) {
+ pcs.globalProxy = item.proxy;
+ account.proxy = document.getElementById("useGlobal").proxy;
+ }
+ else
+ account.proxy = item.proxy;
+ return true;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/content/proxies.xul
@@ -0,0 +1,76 @@
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://instantbird/skin/richlistbox.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/proxies.css" type="text/css"?>
+
+<!DOCTYPE window [
+ <!ENTITY % proxiesDTD SYSTEM "chrome://instantbird/locale/proxies.dtd">
+ %proxiesDTD;
+]>
+
+<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ id="proxyList"
+ windowtype="Messenger:Proxies"
+ onload="gProxies.load()"
+ title="&proxiesDialog.title;"
+ height="450"
+ width="400"
+ buttons="accept,cancel"
+ ondialogaccept="return gProxies.accept()"
+ persist="screenX screenY">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/proxies.js"/>
+
+ <stringbundle id="proxiesBundle" src="chrome://instantbird/locale/proxies.properties"/>
+
+ <dialogheader id="proxyDialogHeader" title="&proxiesDialogHeader.title;"
+ description="&proxiesDialogHeader.description;"/>
+
+ <richlistbox id="proxylist" flex="1" onselect="gProxies.onSelect();">
+ <richlistitem id="useGlobal" orient="vertical">
+ <description class="header">&proxiesDialog.useGlobalSettings;</description>
+ <description class="indent" id="globalProxy"/>
+ </richlistitem>
+ <richlistitem id="noProxy" orient="vertical">
+ <description class="header">&proxiesDialog.directConnection;</description>
+ <description class="indent">&proxiesDialog.noProxy;</description>
+ </richlistitem>
+ <richlistitem id="useEnvironment" orient="vertical">
+ <description class="header">&proxiesDialog.useEnvironment;</description>
+ <description class="indent" id="envProxy">&proxiesDialog.noProxyInEnvironment;</description>
+ </richlistitem>
+ <richlistitem id="newProxy" orient="vertical">
+ <hbox align="center">
+ <description class="header">&proxiesDialog.otherSetting;</description>
+ <menulist id="proxyType">
+ <menupopup>
+ <menuitem label="&proxiesDialog.http.label;" value="1"/>
+ <menuitem label="&proxiesDialog.socks4.label;" value="2"/>
+ <menuitem label="&proxiesDialog.socks5.label;" value="3"/>
+ </menupopup>
+ </menulist>
+ </hbox>
+
+ <hbox align="center">
+ <label value="&proxiesDialog.hostname.label;" control="hostname"/>
+ <textbox id="hostname" style="width: 7em;"/>
+ <spacer flex="1"/>
+ <label value="&proxiesDialog.port.label;" control="port"/>
+ <textbox id="port" type="number" style="width: 5em;"/>
+ </hbox>
+ <hbox align="center">
+ <label value="&proxiesDialog.username.label;" control="username"/>
+ <textbox id="username" style="width: 5em;"/>
+ <spacer flex="1"/>
+ <label value="&proxiesDialog.password.label;" control="password"/>
+ <textbox id="password" type="password" style="width: 5em;"/>
+ </hbox>
+ </richlistitem>
+ </richlistbox>
+
+ <checkbox id="useAsGlobalSettings" label="&proxiesDialog.useAsGlobal.label;" checked="true"/>
+
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/content/proxy.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+<!DOCTYPE bindings [
+ <!ENTITY % proxiesDTD SYSTEM "chrome://instantbird/locale/proxies.dtd">
+ %proxiesDTD;
+]>
+
+<bindings id="proxiesBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="proxy" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:vbox flex="1">
+ <xul:hbox flex="1">
+ <xul:description class="header" anonid="type"/>
+ <xul:description class="indent" anonid="host" flex="1"/>
+ <xul:description anonid="port"/>
+ </xul:hbox>
+ <xul:description class="indent" anonid="username"/>
+ </xul:vbox>
+ </content>
+ <implementation>
+ <method name="_element">
+ <parameter name="aAnonid"/>
+ <body>
+ <![CDATA[
+ return document.getAnonymousElementByAttribute(this, "anonid", aAnonid);
+ ]]>
+ </body>
+ </method>
+
+ <property name="proxy">
+ <getter>
+ <![CDATA[
+ return this._proxy;
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ this._proxy = val;
+
+ var bundle = document.getElementById("proxiesBundle");
+ var type;
+ if (this._proxy.type == Ci.purpleIProxyInfo.httpProxy)
+ type = bundle.getString("proxies.http");
+ else if (this._proxy.type == Ci.purpleIProxyInfo.socks4Proxy)
+ type = bundle.getString("proxies.socks4");
+ else if (this._proxy.type == Ci.purpleIProxyInfo.socks5Proxy)
+ type = bundle.getString("proxies.socks5");
+ else
+ throw "Unknown proxy type";
+
+ this._element("type").textContent = type;
+ this._element("host").textContent = this._proxy.host;
+ this._element("port").textContent = bundle.getFormattedString("proxies.port.string", [this._proxy.port]);
+
+ var usernameElt = this._element("username");
+ var username = this._proxy.username;
+ if (username)
+ usernameElt.textContent = bundle.getFormattedString("proxies.username.string", [this._proxy.username]);
+ else
+ usernameElt.setAttribute("hidden", "true");
+
+ return this._proxy;
+ ]]>
+ </setter>
+ </property>
+
+ </implementation>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/softwareUpdateOverlay.xul
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+
+<overlay id="softwareUpdateOverlay"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+<window id="updates">
+
+#include menus.xul.inc
+
+</window>
+
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/content/tabbrowser.css
@@ -0,0 +1,54 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+tabconversation {
+ -moz-binding: url("chrome://instantbird/content/tabbrowser.xml#tabbrowser");
+}
+
+.tabbrowser-tabs {
+ -moz-binding: url("chrome://instantbird/content/tabbrowser.xml#tabbrowser-tabs");
+}
+
+.tabbrowser-tab {
+ -moz-binding: url("chrome://instantbird/content/tabbrowser.xml#tabbrowser-tab");
+}
+
+.tabbrowser-arrowscrollbox {
+ -moz-binding: url("chrome://instantbird/content/tabbrowser.xml#tabbrowser-arrowscrollbox");
+}
+
+.tabs-alltabs-popup {
+ -moz-binding: url("chrome://instantbird/content/tabbrowser.xml#tabbrowser-alltabs-popup");
+}
+
+.tab-close-button, .tabs-closebutton {
+ -moz-binding: url("chrome://instantbird/content/tabbrowser.xml#tabbrowser-close-tab-button");
+}
+
+.tab-close-button {
+ display: none;
+}
+
+.tabbrowser-tabs:not([closebuttons="noclose"]):not([closebuttons="closeatend"]) > .tabbrowser-tab[selected="true"] > * > * > .tab-close-button {
+ display: -moz-box;
+}
+
+.tabbrowser-tabs[closebuttons="alltabs"] > .tabbrowser-tab:not(:only-child) > * > * > .tab-close-button {
+ display: -moz-box;
+}
+
+.tabs-container:not([overflow="true"]) > .tabs-newtab-button,
+.tabs-container:not([overflow="true"]) > .tabs-alltabs-button,
+.tabs-container[overflow="true"] > .tabbrowser-arrowscrollbox > .tabs-newtab-button {
+ visibility: collapse;
+}
+
+.tabs-newtab-button > .toolbarbutton-text {
+ display: none;
+}
+
+/* Ensure two menuseparators aren't shown together when no tab-specific menuitems exist */
+#context_tabSpecificStartSeparator + #context_tabSpecificEndSeparator {
+ display: none;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/tabbrowser.xml
@@ -0,0 +1,2162 @@
+<?xml version="1.0"?>
+
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!DOCTYPE bindings [
+ <!ENTITY % tabBrowserDTD SYSTEM "chrome://instantbird/locale/tabbrowser.dtd" >
+ %tabBrowserDTD;
+
+ <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+ %globalDTD;
+]>
+
+<bindings id="tabBrowserBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="tabbrowser">
+ <resources>
+ <stylesheet src="chrome://instantbird/content/tabbrowser.css"/>
+ </resources>
+
+ <content>
+ <xul:stringbundle anonid="tbstringbundle" src="chrome://instantbird/locale/tabbrowser.properties"/>
+ <xul:tabbox anonid="tabbox" flex="1" eventnode="document" xbl:inherits="handleCtrlPageUpDown"
+ onselect="if (event.target.localName != 'tabpanels') return;
+ document.getBindingParent(this).updateCurrentTab();">
+ <xul:hbox class="tab-drop-indicator-bar" collapsed="true" chromedir="&locale.dir;"
+ ondragover="document.getBindingParent(this)._onDragOver(event);"
+ ondragleave="document.getBindingParent(this)._onDragLeave(event);"
+ ondrop="document.getBindingParent(this)._onDrop(event);">
+ <xul:hbox class="tab-drop-indicator" mousethrough="always"/>
+ </xul:hbox>
+ <xul:hbox class="tabbrowser-strip" collapsed="true"
+ context="_child"
+ anonid="strip"
+ ondragstart="document.getBindingParent(this)._onDragStart(event);"
+ ondragover="document.getBindingParent(this)._onDragOver(event);"
+ ondrop="document.getBindingParent(this)._onDrop(event);"
+ ondragend="document.getBindingParent(this)._onDragEnd(event);"
+ ondragleave="document.getBindingParent(this)._onDragLeave(event);">
+ <xul:menupopup id="tabContextMenu" onpopupshowing="return document.getBindingParent(this).tabContextMenuShowing(this);"
+ onpopuphiding="return document.getBindingParent(this).tabContextMenuHiding(this)">
+ <xul:menuitem id="context_newTab" label="&newTab.label;" accesskey="&newTab.accesskey;"
+ command="cmd_newtab"/>
+ <xul:menuseparator id="context_newTabSeparator"/>
+ <xul:menuitem id="context_openTabInWindow" label="&openTabInNewWindow.label;"
+ accesskey="&openTabInNewWindow.accesskey;"
+ tbattr="tabbrowser-multiple"
+ oncommand="var tabbrowser = document.getBindingParent(this);
+ tabbrowser.replaceTabsWithWindow([tabbrowser.mContextTab]);"/>
+ <xul:menuseparator id="context_tabSpecificStartSeparator"/>
+ <xul:menuseparator id="context_tabSpecificEndSeparator"/>
+ <xul:menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
+ tbattr="tabbrowser-multiple"
+ oncommand="var tabbrowser = document.getBindingParent(this);
+ tabbrowser.removeAllTabsBut(tabbrowser.mContextTab);"/>
+ <xul:menuitem id="context_closeTab" label="&closeTab.label;" accesskey="&closeTab.accesskey;"
+ oncommand="var tabbrowser = document.getBindingParent(this);
+ tabbrowser.removeTab(tabbrowser.mContextTab);"/>
+ </xul:menupopup>
+
+ <xul:tabs class="tabbrowser-tabs" flex="1"
+ anonid="tabcontainer"
+ setfocus="false"
+ onclick="document.getBindingParent(this).onTabClick(event);"
+ xbl:inherits="onnewtab"
+ ondblclick="document.getBindingParent(this).onTabBarDblClick(event);"
+ onclosetab="document.getBindingParent(this).removeCurrentTab();"
+ onkeypress="document.getBindingParent(this).onTabKeypress(event);">
+ <xul:tab selected="true" validate="never"
+ onerror="this.removeAttribute('image');"
+ maxwidth="250" width="0" minwidth="100" flex="100"
+ class="tabbrowser-tab" label="&untitledTab;" crop="end"/>
+ </xul:tabs>
+ </xul:hbox>
+ <xul:tabpanels flex="1" class="tabbrowser-tabpanels plain" selectedIndex="0" anonid="panelcontainer">
+ <xul:tabpanel selected="true"/>
+ </xul:tabpanels>
+ </xul:tabbox>
+ <children/>
+ </content>
+ <implementation implements="nsIDOMEventListener">
+ <field name="mTabBox" readonly="true">
+ document.getAnonymousElementByAttribute(this, "anonid", "tabbox");
+ </field>
+ <field name="mTabDropIndicatorBar">
+ this.mTabBox.childNodes[0]
+ </field>
+ <field name="mStrip" readonly="true">
+ document.getAnonymousElementByAttribute(this, "anonid", "strip");
+ </field>
+ <field name="mTabContainer" readonly="true">
+ document.getAnonymousElementByAttribute(this, "anonid", "tabcontainer");
+ </field>
+ <field name="mPanelContainer" readonly="true">
+ document.getAnonymousElementByAttribute(this, "anonid", "panelcontainer");
+ </field>
+ <field name="mTabs" readonly="true">
+ this.mTabContainer.childNodes
+ </field>
+ <field name="mStringBundle">
+ document.getAnonymousElementByAttribute(this, "anonid", "tbstringbundle");
+ </field>
+ <field name="mCurrentTab">
+ null
+ </field>
+ <field name="mFirstTabIsDummy">
+ true
+ </field>
+ <field name="mContextTab">
+ null
+ </field>
+ <field name="arrowKeysShouldWrap" readonly="true">
+#ifdef XP_MACOSX
+ true
+#else
+ false
+#endif
+ </field>
+
+ <!-- _conversations and _tabPanels are used as caches
+ to avoid creating arrays multiple times
+ (See conversations and tabPanels properties) -->
+ <field name="_conversations">
+ null
+ </field>
+ <field name="_tabPanels">
+ null
+ </field>
+
+ <field name="_blockDblClick">
+ false
+ </field>
+ <field name="_autoScrollPopup">
+ null
+ </field>
+
+ <method name="updateTitlebar">
+ <body>
+ <![CDATA[
+ if (!this.mCurrentTab) // tabbrowser not initialized yet
+ return;
+
+ var newTitle = "";
+ var docTitle;
+ var docElement = this.ownerDocument.documentElement;
+ var sep = docElement.getAttribute("titlemenuseparator");
+
+ docTitle = this.mCurrentTab.getAttribute("label");
+ if (!docTitle)
+ docTitle = docElement.getAttribute("titledefault");
+
+ var modifier = docElement.getAttribute("titlemodifier");
+ if (docTitle) {
+ newTitle += docElement.getAttribute("titlepreface");
+ newTitle += docTitle;
+ if (modifier)
+ newTitle += sep;
+ }
+ newTitle += modifier;
+
+ this.ownerDocument.title = newTitle;
+ ]]>
+ </body>
+ </method>
+
+ <method name="tabContextMenuShowing">
+ <parameter name="aPopupMenu"/>
+ <body>
+ <![CDATA[
+ let tagName = document.popupNode.localName;
+ if (tagName == "tabs")
+ return false;
+ this.mContextTab = tagName == "tab" ?
+ document.popupNode : this.selectedTab;
+ var disabled = this.mTabs.length == 1;
+ var multipleTabMenuItems = aPopupMenu.getElementsByAttribute("tbattr", "tabbrowser-multiple");
+ for (let item of multipleTabMenuItems)
+ item.disabled = disabled;
+ let tabSpecificEndSeparator = document.getElementById("context_tabSpecificEndSeparator");
+ if ("getPanelSpecificMenuItems" in this.mContextTab.linkedTabPanel) {
+ // Add in tab-specific menu items from the tab panel
+ let panelMenuItems = this.mContextTab.linkedTabPanel.getPanelSpecificMenuItems();
+ for (let item of panelMenuItems)
+ aPopupMenu.insertBefore(item, tabSpecificEndSeparator);
+ }
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <method name="tabContextMenuHiding">
+ <parameter name="aPopupMenu"/>
+ <body>
+ <![CDATA[
+ // Remove tab specific menu items added onpopupshowing.
+ let range = document.createRange();
+ range.setStartAfter(document.getElementById("context_tabSpecificStartSeparator"));
+ range.setEndBefore(document.getElementById("context_tabSpecificEndSeparator"));
+ range.deleteContents();
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateCurrentTab">
+ <parameter name="aForceUpdate"/>
+ <body>
+ <![CDATA[
+ /* This method handles transitioning when switching tabs.
+ * When a new tab is selected, mCurrentTab still refers to the
+ * previously selected tab until we set it in this method.
+ * this.selectedTab always refers to the actual selected tab
+ * (see the "selectedTab" property).
+ * Also, the selected* properties other than selectedTab use
+ * mCurrentTab and not selectedTab. This ensures a newly selected
+ * tab's properties are not accessed till this method is called.
+ */
+ // We check that the currently selected tab is different from
+ // mCurrentTab (i.e. a different tab was selected) before updating.
+ if (!aForceUpdate && this.mCurrentTab == this.selectedTab)
+ return;
+
+ // Deactivate the previous browser if it existed...
+ if (this.selectedBrowser)
+ this.selectedBrowser.docShell.isActive = false;
+ // ... set mCurrentTab to newly selected tab...
+ this.mCurrentTab = this.selectedTab;
+ // ... and activate the new browser if it exists.
+ if (this.selectedBrowser) {
+ this.mCurrentTab.linkedBrowser.docShell.isActive =
+ (window.windowState != window.STATE_MINIMIZED);
+ }
+
+ if ("switchingToPanel" in this.selectedPanel)
+ this.selectedPanel.switchingToPanel();
+
+ // Update the window title.
+ this.updateTitlebar();
+
+ // We've selected the new tab, so go ahead and notify listeners.
+ var event = document.createEvent("Events");
+ event.initEvent("TabSelect", true, false);
+ this.mCurrentTab.dispatchEvent(event);
+
+ let focusedElement = document.commandDispatcher.focusedElement;
+ if (focusedElement &&
+ focusedElement.parentNode == this.mCurrentTab.parentNode &&
+ !focusedElement.collapsed) {
+ // The focus is on a tab in the same tab panel and we are not
+ // closing that tab: focus the new tab, not the conversation.
+ // Nevertheless update the visible conversation, but only if
+ // the user stays on the tab for more than a moment, to prevent
+ // tabs from being marked as read if the user is just scrolling
+ // past them with the arrow keys. 400ms is between "200ms - a bit
+ // too quick for people who repeat-keypress more slowly than me"
+ // and "600ms - a bit too noticeable already".
+ if (this._tabSelectTimer)
+ clearTimeout(this._tabSelectTimer);
+ if (!("onSelect" in this.selectedPanel))
+ return;
+ this._tabSelectTimer = setTimeout(function() {
+ this.selectedPanel.onSelect();
+ }.bind(this), 400);
+ return;
+ }
+
+ delete this._tabSelectTimer;
+ this.selectedPanel.focus();
+ if ("onSelect" in this.selectedPanel)
+ this.selectedPanel.onSelect();
+ ]]>
+ </body>
+ </method>
+
+ <method name="onTabKeypress">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ const tabKeyCodes = [KeyEvent.DOM_VK_TAB,
+ KeyEvent.DOM_VK_HOME, KeyEvent.DOM_VK_END,
+ KeyEvent.DOM_VK_UP, KeyEvent.DOM_VK_DOWN,
+ KeyEvent.DOM_VK_LEFT, KeyEvent.DOM_VK_RIGHT];
+
+ if (tabKeyCodes.indexOf(event.keyCode) != -1)
+ return;
+
+ // Focus the panel and pass the key to it.
+ event.preventDefault();
+ event.stopPropagation();
+ this.selectedPanel.focus();
+
+ const masks = Components.interfaces.nsIDOMNSEvent;
+ var modifiers = 0;
+ if (event.shiftKey)
+ modifiers |= masks.SHIFT_MASK;
+ if (event.ctrlKey)
+ modifiers |= masks.CONTROL_MASK;
+ if (event.altKey)
+ modifiers |= masks.ALT_MASK;
+ if (event.metaKey)
+ modifiers |= masks.META_MASK;
+ if (event.accelKey)
+ modifiers |= (navigator.platform.indexOf("Mac") >= 0) ? masks.META_MASK
+ : masks.CONTROL_MASK;
+ // Can't use dispatchEvent to the textbox as these refuse untrusted key events.
+ this.selectedPanel.ownerDocument.defaultView
+ .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIDOMWindowUtils)
+ .sendKeyEvent(event.type, event.keyCode, event.charCode, modifiers);
+ ]]>
+ </body>
+ </method>
+
+ <method name="onTabClick">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ // We only handle the middle mouse button.
+ if (aEvent.button != 1)
+ return;
+
+ if (aEvent.target.localName == "tab")
+ this.removeTab(aEvent.target);
+ else if (aEvent.originalTarget.localName == "box")
+ Conversations.showNewTab();
+ else
+ return;
+
+ aEvent.stopPropagation();
+ ]]>
+ </body>
+ </method>
+
+ <field name="_prefObserver">({
+ tabbrowser: this,
+
+ observe: function(subject, topic, data)
+ {
+ if (topic == "nsPref:changed") {
+ switch (data) {
+ case "browser.tabs.autoHide":
+ if (this.tabbrowser.tabContainer.childNodes.length == 1 &&
+ window.toolbar.visible) {
+ let visible =
+ !Services.prefs.getBoolPref("browser.tabs.autoHide");
+ this.tabbrowser.setStripVisibilityTo(visible);
+ }
+ break;
+
+ case "messenger.conversations.useSeparateWindowsForMUCs":
+ if (this.tabbrowser.tabContainer.childNodes.length > 1 &&
+ Services.prefs.getBoolPref("messenger.conversations.useSeparateWindowsForMUCs")) {
+ let convs = this.tabbrowser.conversations;
+ let firstIsChat = convs[0].hasAttribute("chat");
+ let movedTabs = [];
+ for (let i = 1; i < convs.length; ++i)
+ if (convs[i].hasAttribute("chat") != firstIsChat)
+ movedTabs.push(convs[i].tab);
+ if (movedTabs.length)
+ this.tabbrowser.replaceTabsWithWindow(movedTabs);
+ }
+ break;
+ }
+ }
+ },
+
+ QueryInterface: function(aIID)
+ {
+ if (aIID.equals(Components.interfaces.nsIObserver) ||
+ aIID.equals(Components.interfaces.nsISupports))
+ return this;
+ throw Components.results.NS_NOINTERFACE;
+ }
+ });
+ </field>
+
+ <method name="setStripVisibilityTo">
+ <parameter name="aShow"/>
+ <body>
+ <![CDATA[
+ this.mStrip.collapsed = !aShow;
+
+#if 0
+ if (aShow) {
+ // XXXdwh temporary unclean dependency on specific menu items in navigator.xul
+ document.getElementById("menu_closeWindow").hidden = false;
+ document.getElementById("menu_close").setAttribute("label", this.mStringBundle.getString("tabs.closeTab"));
+ }
+ else {
+ // XXXdwh temporary unclean dependency on specific menu items in navigator.xul
+ document.getElementById("menu_closeWindow").hidden = true;
+ document.getElementById("menu_close").setAttribute("label", this.mStringBundle.getString("tabs.close"));
+ }
+#endif
+ ]]>
+ </body>
+ </method>
+
+ <method name="getStripVisibility">
+ <body>
+ return !this.mStrip.collapsed;
+ </body>
+ </method>
+
+ <method name="addConversation">
+ <parameter name="aConv"/>
+ <body>
+ <![CDATA[
+ if (!this.mFirstTabIsDummy) {
+ if (Services.prefs.getBoolPref("messenger.conversations.useSeparateWindowsForMUCs") &&
+ this.conversations[0] && aConv.isChat != this.conversations[0].hasAttribute("chat"))
+ return null;
+ }
+
+ let convPanel = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "conversation");
+ return this.addPanel(convPanel, aConv);
+ ]]>
+ </body>
+ </method>
+
+ <!-- Adds a tab panel.
+ Conversation specific properties and attributes are set if aConv is defined.
+
+ Note that a panel must focus a child element in its focus method to
+ prevent a previously focused element from retaining focus and continuing
+ to receive input.
+
+ Panels can implement the following methods to customize behavior in certain situations:
+ destroy:
+ Called before panel is removed.
+ The destructor doesn't always get called when the panel is removed,
+ so use this method to force any required cleanup.
+ finishImport:
+ When a tab is moved to a different window, a new instance of the panel
+ is created. This method is called on the new instance after adding it.
+ Use it to initialize the panel from the instance in the previous window,
+ which is passed as a parameter.
+ getPanelSpecificMenuItems:
+ Called before showing the tab's context menu.
+ Use it to return an array of menu items specific to this panel.
+ onResize:
+ Called when the window is resized.
+ Use it to perform any changes required due to the new size.
+ onSelect:
+ Called when the tab is selected and the user is not just scrolling past it.
+ Use it for things like marking conversations as read.
+ switchingToPanel:
+ Called when switching to the panel, even just in passing.
+ Use it to customize behavior when the panel is displayed.
+ switchingAwayFromPanel:
+ Called when switching away from the panel.
+ Use it to customize behavior when the panel is hidden. -->
+ <method name="addPanel">
+ <parameter name="aPanel"/>
+ <parameter name="aConv"/>
+ <!-- aPanel is a node containing the content of the panel
+ aConv is an (optional) imIConversation instance -->
+ <body>
+ <![CDATA[
+ if (!this.mFirstTabIsDummy) {
+ if (!Services.prefs.getBoolPref("messenger.conversations.openInTabs"))
+ return null;
+ }
+ // invalidate cache, because mTabContainer is about to change
+ this._conversations = null;
+ this._tabPanels = null;
+
+ this.mPanelContainer.appendChild(aPanel);
+
+ var t = this.mTabContainer.addTab();
+ aPanel.tab = t;
+
+ if (aConv) {
+ aConv.QueryInterface(Components.interfaces.imIConversation);
+ // set up the shared autoscroll popup if it doesn't exist yet
+ if (!this._autoScrollPopup) {
+ this._autoScrollPopup = aPanel.browser._createAutoScrollPopup();
+ this._autoScrollPopup.id = "autoscroller";
+ this.appendChild(this._autoScrollPopup);
+ }
+ aPanel.setAttribute("contenttooltip", this.getAttribute("contenttooltip"));
+ aPanel.setAttribute("contentcontextmenu", this.getAttribute("contentcontextmenu"));
+ aPanel.setAttribute("autoscrollpopup", this._autoScrollPopup.id);
+ aPanel.conv = aConv;
+ t.linkedConversation = aPanel;
+ t.linkedBrowser = aPanel.browser;
+ // We start our browsers out as inactive, and then maintain
+ // activeness in updateCurrentTab.
+ aPanel.browser.docShell.isActive = false;
+ }
+
+ this.setStripVisibilityTo(
+ !(this.mFirstTabIsDummy && Services.prefs.getBoolPref("browser.tabs.autoHide")));
+
+ var uniqueId = "panel" + Date.now() + t._tPos;
+ aPanel.id = uniqueId;
+ t.linkedPanel = uniqueId;
+ t.linkedTabPanel = aPanel;
+ t.setAttribute("type", aPanel.nodeName);
+
+ this.updateCurrentTab(true);
+
+ if (this.mFirstTabIsDummy)
+ this.removeTab(this.mTabContainer.firstChild);
+ this.mFirstTabIsDummy = false;
+
+ return aPanel;
+ ]]>
+ </body>
+ </method>
+
+ <method name="warnAboutClosingTabs">
+ <parameter name="aAll"/>
+ <body>
+ <![CDATA[
+ var numTabs = this.mTabContainer.childNodes.length;
+ var reallyClose = true;
+ if (numTabs <= 1)
+ return reallyClose;
+
+ let unreadConvsCount = this.conversations.filter(function(conv) {
+ let tab = conv.tab;
+ return tab.hasAttribute("unread") &&
+ (!tab.hasAttribute("chat") || tab.hasAttribute("attention"));
+ }).length;
+ if (!unreadConvsCount)
+ return reallyClose;
+ const pref = "browser.tabs.warnOnClose";
+ var shouldPrompt =
+ Services.prefs.getBoolPref("messenger.conversations.alwaysClose") &&
+ Services.prefs.getBoolPref(pref);
+
+ if (shouldPrompt) {
+ //default to true: if it were false, we wouldn't get this far
+ var warnOnClose = { value:true };
+ var bundle = this.mStringBundle;
+ if (!("PluralForm" in window))
+ Components.utils.import("resource://gre/modules/PluralForm.jsm");
+ var promptMessage = PluralForm.get(unreadConvsCount, bundle.getString("tabs.closeWarningMessage"))
+ .replace("#1", unreadConvsCount);
+ var closeButton = PluralForm.get(unreadConvsCount, bundle.getString("tabs.closeButton"));
+ // focus the window before prompting.
+ // this will raise any minimized window, which will
+ // make it obvious which window the prompt is for and will
+ // solve the problem of windows "obscuring" the prompt.
+ // see bug #350299 for more details
+ window.focus();
+ var promptService = Services.prompt;
+ var buttonPressed = promptService.confirmEx(window,
+ bundle.getString('tabs.closeWarningTitle'),
+ promptMessage,
+ (promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0)
+ + (promptService.BUTTON_TITLE_CANCEL * promptService.BUTTON_POS_1),
+ closeButton,
+ null, null,
+ bundle.getString('tabs.closeWarningPromptMe'),
+ warnOnClose);
+ reallyClose = (buttonPressed == 0);
+ // don't set the pref unless they press OK and it's false
+ if (reallyClose && !warnOnClose.value)
+ Services.prefs.setBoolPref(pref, false);
+ }
+ return reallyClose;
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeAllTabsBut">
+ <parameter name="aTab"/>
+ <body>
+ <![CDATA[
+ if (this.warnAboutClosingTabs(false)) {
+ this.selectedTab = aTab;
+
+ for (let i = this.mTabs.length - 1; i >= 0; --i) {
+ if (this.mTabs[i] != aTab)
+ this.removeTab(this.mTabs[i]);
+ }
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeCurrentTab">
+ <body>
+ <![CDATA[
+ this.removeTab(this.mCurrentTab);
+ ]]>
+ </body>
+ </method>
+
+ <field name="_removingTabs">
+ []
+ </field>
+
+ <method name="removeTab">
+ <parameter name="aTab"/>
+ <body>
+ <![CDATA[
+ this._endRemoveTab(this._beginRemoveTab(aTab, false, true));
+ ]]>
+ </body>
+ </method>
+
+ <!-- Tab close requests are ignored if the window is closing anyway,
+ e.g. when holding Ctrl+W. -->
+ <field name="_windowIsClosing">
+ false
+ </field>
+
+ <!-- Returns everything that _endRemoveTab needs in an array. -->
+ <method name="_beginRemoveTab">
+ <parameter name="aTab"/>
+ <parameter name="aTabWillBeMoved"/>
+ <parameter name="aCloseWindowFastpath"/>
+ <body>
+ <![CDATA[
+ if (this._removingTabs.indexOf(aTab) > -1 || this._windowIsClosing)
+ return null;
+
+ var browser = aTab.linkedBrowser;
+
+ if (!aTabWillBeMoved && browser) {
+ let ds = browser.docShell;
+ if (ds.contentViewer && !ds.contentViewer.permitUnload())
+ return null;
+ }
+
+ var closeWindow = false;
+ var l = this.mTabs.length - this._removingTabs.length;
+ if (l == 1) {
+ closeWindow = true;
+ if (aCloseWindowFastpath &&
+ this._removingTabs.length == 0 &&
+ (this._windowIsClosing = window.closeWindow(true)))
+ return null;
+ }
+ if (l == 2) {
+ let autohide = Services.prefs.getBoolPref("browser.tabs.autoHide");
+ let tabStripHide = !window.toolbar.visible;
+ if (autohide || tabStripHide)
+ this.setStripVisibilityTo(false);
+ }
+
+ this._removingTabs.push(aTab);
+
+ // We're committed to closing the tab now.
+ // Dispatch a notification.
+ // We dispatch it before any teardown so that event listeners can
+ // inspect the tab that's about to close.
+ var evt = document.createEvent("UIEvent");
+ evt.initUIEvent("TabClose", true, false, window, aTabWillBeMoved ? 1 : 0);
+ aTab.dispatchEvent(evt);
+
+ return [aTab, closeWindow];
+ ]]>
+ </body>
+ </method>
+
+ <method name="_endRemoveTab">
+ <parameter name="args"/>
+ <body>
+ <![CDATA[
+ if (!args)
+ return;
+ var [aTab, aCloseWindow] = args;
+
+ // update the UI early for responsiveness
+ aTab.collapsed = true;
+
+ this.tabContainer._fillTrailingGap();
+ this._blurTab(aTab);
+
+ this._removingTabs.splice(this._removingTabs.indexOf(aTab), 1);
+
+ if (aCloseWindow) {
+ this._windowIsClosing = true;
+ while (this._removingTabs.length)
+ this._endRemoveTab([this._removingTabs[0], false]);
+ } else if (!this._windowIsClosing) {
+ // see notes in addTab
+ let _delayedUpdate = function (aTabContainer) {
+ aTabContainer.adjustTabstrip();
+ aTabContainer.mTabstrip._updateScrollButtonsDisabledState();
+ };
+ setTimeout(_delayedUpdate, 0, this.tabContainer);
+ }
+
+ var panel = aTab.linkedTabPanel;
+
+ // Because of the way XBL works (fields just set JS
+ // properties on the element) and the code we have in place
+ // to preserve the JS objects for any elements that have
+ // JS properties set on them, the browser element won't be
+ // destroyed until the document goes away. So we force a
+ // cleanup ourselves.
+ // This has to happen before we remove the child so that the
+ // XBL implementation of nsIObserver still works.
+ if ("destroy" in panel)
+ panel.destroy();
+
+ // Invalidate caches, as the tab is removed from the tab container.
+ this._conversations = null;
+ this._tabPanels = null;
+
+ // Remove the tab ...
+ this.tabContainer.removeChild(aTab);
+
+ // ... and fix up the _tPos properties immediately.
+ for (let i = aTab._tPos; i < this.mTabs.length; i++)
+ this.mTabs[i]._tPos = i;
+
+ // update first-tab/last-tab/beforeselected/afterselected attributes
+ if (this.selectedTab) // can be null if we removed the last tab
+ this.selectedTab._selected = true;
+
+ // This will unload the document. An unload handler could remove
+ // dependant tabs, so it's important that the tabbrowser is now in
+ // a consistent state (tab removed, tab positions updated, etc.).
+ // Also, it's important that another tab has been selected before
+ // the panel is removed; otherwise, a random sibling panel can flash.
+ this.mPanelContainer.removeChild(panel);
+
+ // As the panel is removed, the removal of a dependent document can
+ // cause the whole window to close. So at this point, it's possible
+ // that the binding is destructed.
+ if (this.mTabBox)
+ this.mTabBox.selectedPanel = this.selectedPanel;
+
+ if (aCloseWindow)
+ this._windowIsClosing = closeWindow(true);
+ ]]>
+ </body>
+ </method>
+
+ <method name="_blurTab">
+ <parameter name="aTab"/>
+ <body>
+ <![CDATA[
+ if (this.mCurrentTab != aTab)
+ return;
+
+ var tab = aTab;
+
+ do {
+ tab = tab.nextSibling;
+ } while (tab && this._removingTabs.indexOf(tab) != -1);
+
+ if (!tab) {
+ tab = aTab;
+
+ do {
+ tab = tab.previousSibling;
+ } while (tab && this._removingTabs.indexOf(tab) != -1);
+ }
+
+ this.selectedTab = tab;
+ ]]>
+ </body>
+ </method>
+
+ <method name="importPanel">
+ <parameter name="aOtherTab"/>
+ <body>
+ <![CDATA[
+ var remoteTabBrowser = aOtherTab.ownerDocument.defaultView.getTabBrowser();
+
+ // First, start teardown of the other browser. Make sure to not
+ // fire the beforeunload event in the process. Close the other
+ // window if this was its last tab.
+ var endRemoveArgs = remoteTabBrowser._beginRemoveTab(aOtherTab, true);
+
+ var newPanel = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ aOtherTab.linkedTabPanel.nodeName);
+ this.addPanel(newPanel, aOtherTab.linkedTabPanel.conv || null);
+
+ var aOurTab = newPanel.tab;
+
+ // Tell the new panel to sync up with the other one.
+ if ("finishImport" in newPanel)
+ newPanel.finishImport(aOtherTab.linkedTabPanel);
+
+ // Finish tearing down the tab that's going away.
+ remoteTabBrowser._endRemoveTab(endRemoveArgs);
+
+ // If the tab was already selected (this happpens in the scenario
+ // of replaceTabsWithWindow), notify onLocationChange, etc.
+ if (aOurTab == this.selectedTab)
+ this.updateCurrentTab(true);
+
+ return newPanel;
+ ]]>
+ </body>
+ </method>
+
+ <method name="onTabBarDblClick">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ // See hack note in the tabbrowser-close-button binding.
+ // 0 represents the primary mouse button.
+ if (!this._blockDblClick && aEvent.button == 0 &&
+ aEvent.originalTarget.localName == "box")
+ Conversations.showNewTab();
+ ]]>
+ </body>
+ </method>
+
+ <method name="selectPanel">
+ <parameter name="aPanel"/>
+ <body>
+ <![CDATA[
+ if (aPanel.parentNode != this.mPanelContainer)
+ throw "Trying to select a panel that's not in this tabbrowser?";
+ this.selectedTab = aPanel.tab;
+ aPanel.focus();
+ if ("onSelect" in aPanel)
+ aPanel.onSelect();
+ ]]>
+ </body>
+ </method>
+
+ <method name="selectTabAtIndex">
+ <parameter name="aIndex"/>
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ // count backwards for aIndex < 0
+ if (aIndex < 0)
+ aIndex += this.mTabs.length;
+
+ if (aIndex >= 0 &&
+ aIndex < this.mTabs.length &&
+ aIndex != this.tabContainer.selectedIndex)
+ this.selectedTab = this.mTabs[aIndex];
+
+ if (aEvent) {
+ aEvent.preventDefault();
+ aEvent.stopPropagation();
+ }
+ ]]>
+ </body>
+ </method>
+
+ <property name="tabContainer" readonly="true">
+ <getter>
+ return this.mTabContainer;
+ </getter>
+ </property>
+
+ <property name="selectedTab">
+ <getter>
+ return this.mTabBox.selectedTab;
+ </getter>
+ <setter>
+ <![CDATA[
+ // Update the tab
+ this.mTabBox.selectedTab = val;
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <property name="selectedBrowser"
+ onget="return this.mCurrentTab.linkedBrowser || null;"
+ readonly="true"/>
+
+ <property name="selectedConversation"
+ onget="return this.mCurrentTab.linkedConversation || null;"
+ readonly="true"/>
+
+ <property name="selectedPanel"
+ onget="return this.mCurrentTab.linkedTabPanel || null;"
+ readonly="true"/>
+
+ <property name="tabPanels" readonly="true">
+ <getter>
+ <![CDATA[
+ return this._tabPanels ||
+ (this._tabPanels = Array.map(this.mTabs, function (tab) tab.linkedTabPanel));
+ ]]>
+ </getter>
+ </property>
+
+ <property name="conversations" readonly="true">
+ <getter>
+ <![CDATA[
+ if (!this._conversations) {
+ this._conversations = Array.map(this.mTabs, function(aTab) aTab.linkedConversation)
+ .filter(function(aConv) aConv);
+ }
+ return this._conversations;
+ ]]>
+ </getter>
+ </property>
+
+ <method name="_onDragStart">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ var target = aEvent.target;
+ if (target.localName == "tab" &&
+ aEvent.originalTarget.localName != "toolbarbutton") {
+ var dt = aEvent.dataTransfer;
+ dt.mozSetDataAt(TAB_DROP_TYPE, target, 0);
+
+ aEvent.stopPropagation();
+ target._dragOffsetX =
+ aEvent.screenX - window.screenX - target.getBoundingClientRect().left;
+ target._dragOffsetY = aEvent.screenY - window.screenY;
+ }
+
+ this._dragLeftWindow = false;
+ ]]>
+ </body>
+ </method>
+
+ <method name="_setEffectAllowedForDataTransfer">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ var dt = aEvent.dataTransfer;
+ // Disallow dropping multiple items
+ if (dt.mozItemCount > 1)
+ return dt.effectAllowed = "none";
+
+ var types = dt.mozTypesAt(0);
+ var sourceNode = null;
+ // tabs are always added as the first type
+ if (types[0] == TAB_DROP_TYPE) {
+ var sourceNode = dt.mozGetDataAt(TAB_DROP_TYPE, 0);
+ if (sourceNode instanceof XULElement &&
+ sourceNode.localName == "tab" &&
+ (sourceNode.parentNode == this.mTabContainer ||
+ (sourceNode.ownerDocument.defaultView instanceof ChromeWindow &&
+ sourceNode.ownerDocument.documentElement.getAttribute("windowtype") == "Messenger:convs"))) {
+ if (sourceNode.parentNode == this.mTabContainer &&
+ (aEvent.screenX >= sourceNode.boxObject.screenX &&
+ aEvent.screenX <= (sourceNode.boxObject.screenX +
+ sourceNode.boxObject.width))) {
+ return dt.effectAllowed = "none";
+ }
+
+ return dt.effectAllowed = "copyMove";
+ }
+ }
+
+ return dt.effectAllowed = "none";
+ ]]>
+ </body>
+ </method>
+
+ <method name="_onDragOver">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ var effects = this._setEffectAllowedForDataTransfer(aEvent);
+
+ var ib = this.mTabDropIndicatorBar;
+ if (effects == "" || effects == "none") {
+ ib.collapsed = "true";
+ return;
+ }
+ aEvent.preventDefault();
+ aEvent.stopPropagation();
+
+ var tabStrip = this.mTabContainer.mTabstrip;
+ var ltr = (window.getComputedStyle(this.parentNode, null).direction
+ == "ltr");
+
+ // autoscroll the tab strip if we drag over the scroll
+ // buttons, even if we aren't dragging a tab, but then
+ // return to avoid drawing the drop indicator
+ var pixelsToScroll = 0;
+ if (this.mTabContainer.getAttribute("overflow") == "true") {
+ var targetAnonid = aEvent.originalTarget.getAttribute("anonid");
+ switch (targetAnonid) {
+ case "scrollbutton-up":
+ pixelsToScroll = tabStrip.scrollIncrement * -1;
+ break;
+ case "scrollbutton-down":
+ case "alltabs-button":
+ case "newtab-button":
+ pixelsToScroll = tabStrip.scrollIncrement;
+ break;
+ }
+ if (pixelsToScroll)
+ tabStrip.scrollByPixels((ltr ? 1 : -1) * pixelsToScroll);
+ }
+
+ var newIndex = this.getNewIndex(aEvent);
+ var ib = this.mTabDropIndicatorBar;
+ var ind = ib.firstChild;
+ var tabStripBoxObject = tabStrip.scrollBoxObject;
+ var minMargin = tabStripBoxObject.x - this.boxObject.x;
+ // make sure we don't place the tab drop indicator past the
+ // edge, or the containing box will flex and stretch
+ // the tab drop indicator bar, which will flex the url bar.
+ // XXX todo
+ // just use first value if you can figure out how to get
+ // the tab drop indicator to crop instead of flex and stretch
+ // the tab drop indicator bar.
+ var maxMargin = Math.min(minMargin + tabStripBoxObject.width,
+ ib.boxObject.x + ib.boxObject.width -
+ ind.boxObject.width);
+ if (!ltr)
+ [minMargin, maxMargin] = [this.boxObject.width - maxMargin,
+ this.boxObject.width - minMargin];
+ var newMargin, tabBoxObject;
+ if (pixelsToScroll) {
+ // if we are scrolling, put the drop indicator at the edge
+ // so that it doesn't jump while scrolling
+ newMargin = (pixelsToScroll > 0) ? maxMargin : minMargin;
+ }
+ else {
+ if (newIndex == this.mTabs.length) {
+ tabBoxObject = this.mTabs[newIndex-1].boxObject;
+ if (ltr)
+ newMargin = tabBoxObject.screenX - this.boxObject.screenX
+ + tabBoxObject.width;
+ else
+ newMargin = this.boxObject.screenX - tabBoxObject.screenX
+ + this.boxObject.width;
+ }
+ else {
+ tabBoxObject = this.mTabs[newIndex].boxObject;
+ if (ltr)
+ newMargin = tabBoxObject.screenX - this.boxObject.screenX;
+ else
+ newMargin = this.boxObject.screenX - tabBoxObject.screenX
+ + this.boxObject.width - tabBoxObject.width;
+ }
+ // ensure we never place the drop indicator beyond our limits
+ if (newMargin < minMargin)
+ newMargin = minMargin;
+ else if (newMargin > maxMargin)
+ newMargin = maxMargin;
+ }
+
+ ind.style.MozMarginStart = newMargin + 'px';
+
+ ib.collapsed = false;
+ ]]>
+ </body>
+ </method>
+
+ <method name="_onDrop">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ var dt = aEvent.dataTransfer;
+ var dropEffect = dt.dropEffect;
+ var draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0);
+ // not our drop then
+ if (!draggedTab)
+ return;
+
+ this.mTabDropIndicatorBar.collapsed = true;
+ aEvent.stopPropagation();
+
+ if (draggedTab.parentNode == this.mTabContainer) {
+ var newIndex = this.getNewIndex(aEvent);
+ // move the dropped tab
+ if (newIndex > draggedTab._tPos)
+ newIndex--;
+ if (newIndex != draggedTab._tPos)
+ this.moveTabTo(draggedTab, newIndex);
+ }
+ else {
+ // swap the dropped tab with a new one we create and then close
+ // it in the other window (making it seem to have moved between
+ // windows)
+
+ // Compute the new index *before* we add a tab
+ newIndex = this.getNewIndex(aEvent);
+ var panel = this.importPanel(draggedTab);
+ this.moveTabTo(panel.tab, newIndex);
+
+ // We need to set selectedTab after we've swapped the docShells
+ this.selectedTab = panel.tab;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="_onDragEnd">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ // Note: while this case is correctly handled here, this event
+ // isn't dispatched when the tab is moved within the tabstrip,
+ // see bug 460801.
+
+ // Collapse the drop indicator, just to be sure...
+ this.mTabDropIndicatorBar.collapsed = true;
+
+ // * mozUserCancelled = the user pressed ESC to cancel the drag
+ var dt = aEvent.dataTransfer;
+ if (dt.mozUserCancelled || dt.dropEffect != "none")
+ return;
+
+ // Disable detach within the browser toolbox
+ var eX = aEvent.screenX;
+ var wX = window.screenX;
+ var eY = aEvent.screenY;
+ // check if the drop point is horizontally within the window
+ if (eX > wX && eX < (wX + window.outerWidth)) {
+ var bo = this.mTabContainer.mTabstrip.boxObject;
+ // also avoid detaching if the the tab was dropped too close to
+ // the tabbar (half a tab)
+ var endScreenY = bo.screenY + 1.5 * bo.height;
+ if (eY < endScreenY && eY > window.screenY)
+ return;
+ }
+
+ var draggedTab = dt.mozGetDataAt(TAB_DROP_TYPE, 0);
+ let win = this.replaceTabsWithWindow([draggedTab]);
+ if (win) {
+ win.moveTo(eX - draggedTab._dragOffsetX,
+ eY - draggedTab._dragOffsetY);
+ }
+ aEvent.stopPropagation();
+ ]]>
+ </body>
+ </method>
+
+ <!-- Moves a tab to a new browser window, unless it's already the only tab
+ in the current window, in which case this will do nothing. -->
+ <method name="replaceTabsWithWindow">
+ <parameter name="aTabs"/>
+ <body>
+ <![CDATA[
+ if (this.mTabs.length == 1)
+ return null;
+
+ var sa = Components.classes["@mozilla.org/supports-array;1"]
+ .createInstance(Components.interfaces.nsISupportsArray);
+ aTabs.forEach(function(aTab) { sa.AppendElement(aTab); });
+
+ // tell a new window to take the "dropped" tab
+ return Services.ww.openWindow(window,
+ getConvWindowURL(),
+ null,
+ "chrome,dialog=no,all",
+ sa);
+ ]]>
+ </body>
+ </method>
+
+ <method name="_onDragLeave">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ this.mTabDropIndicatorBar.collapsed = true;
+ aEvent.stopPropagation();
+ ]]>
+ </body>
+ </method>
+
+ <method name="moveTabTo">
+ <parameter name="aTab"/>
+ <parameter name="aIndex"/>
+ <body>
+ <![CDATA[
+ // Invalidate caches.
+ this._conversations = null;
+ this._tabPanels = null;
+
+ var oldPosition = aTab._tPos;
+
+ aIndex = aIndex < aTab._tPos ? aIndex: aIndex+1;
+ this.mCurrentTab._selected = false;
+ // use .item() instead of [] because dragging to the end of the strip goes out of
+ // bounds: .item() returns null (so it acts like appendChild), but [] throws
+ this.mTabContainer.insertBefore(aTab, this.mTabContainer.childNodes.item(aIndex));
+ // invalidate cache, because mTabContainer is about to change
+ this._conversations = null;
+ this._tabPanels = null;
+
+ var i;
+ for (i = 0; i < this.mTabContainer.childNodes.length; i++) {
+ this.mTabContainer.childNodes[i]._tPos = i;
+ this.mTabContainer.childNodes[i]._selected = false;
+ }
+ this.mCurrentTab._selected = true;
+ this.mTabContainer.mTabstrip.scrollBoxObject.ensureElementIsVisible(this.mCurrentTab);
+
+ var evt = document.createEvent("UIEvents");
+ evt.initUIEvent("TabMove", true, false, window, oldPosition);
+ aTab.dispatchEvent(evt);
+
+ return aTab;
+ ]]>
+ </body>
+ </method>
+
+ <method name="getNewIndex">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ var i;
+ if (window.getComputedStyle(this.parentNode, null).direction == "ltr") {
+ for (i = aEvent.target.localName == "tab" ? aEvent.target._tPos : 0; i < this.mTabs.length; i++)
+ if (aEvent.screenX < this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width / 2)
+ return i;
+ } else {
+ for (i = aEvent.target.localName == "tab" ? aEvent.target._tPos : 0; i < this.mTabs.length; i++)
+ if (aEvent.screenX > this.mTabs[i].boxObject.screenX + this.mTabs[i].boxObject.width / 2)
+ return i;
+ }
+ return this.mTabs.length;
+ ]]>
+ </body>
+ </method>
+
+
+ <method name="moveTabForward">
+ <body>
+ <![CDATA[
+ var tabPos = this.mCurrentTab._tPos;
+ if (tabPos < this.mTabs.length - 1) {
+ this.moveTabTo(this.mCurrentTab, tabPos + 1);
+ this.mCurrentTab.focus();
+ }
+ else if (this.arrowKeysShouldWrap)
+ this.moveTabToStart();
+ ]]>
+ </body>
+ </method>
+
+ <method name="moveTabBackward">
+ <body>
+ <![CDATA[
+ var tabPos = this.mCurrentTab._tPos;
+ if (tabPos > 0) {
+ this.moveTabTo(this.mCurrentTab, tabPos - 1);
+ this.mCurrentTab.focus();
+ }
+ else if (this.arrowKeysShouldWrap)
+ this.moveTabToEnd();
+ ]]>
+ </body>
+ </method>
+
+ <method name="moveTabToStart">
+ <body>
+ <![CDATA[
+ var tabPos = this.mCurrentTab._tPos;
+ if (tabPos > 0) {
+ this.moveTabTo(this.mCurrentTab, 0);
+ this.mCurrentTab.focus();
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="moveTabToEnd">
+ <body>
+ <![CDATA[
+ var tabPos = this.mCurrentTab._tPos;
+ if (tabPos < this.mTabs.length - 1) {
+ this.moveTabTo(this.mCurrentTab, this.mTabs.length - 1);
+ this.mCurrentTab.focus();
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="moveTabOver">
+ <parameter name="aEvent"/>
+ <body>
+ <![CDATA[
+ var direction = window.getComputedStyle(this.parentNode, null).direction;
+ if ((direction == "ltr" && aEvent.keyCode == KeyEvent.DOM_VK_RIGHT) ||
+ (direction == "rtl" && aEvent.keyCode == KeyEvent.DOM_VK_LEFT))
+ this.moveTabForward();
+ else
+ this.moveTabBackward();
+ ]]>
+ </body>
+ </method>
+
+ <method name="dragDropSecurityCheck">
+ <parameter name="aEvent"/>
+ <parameter name="aDragSession"/>
+ <parameter name="aUri"/>
+ <body>
+ <![CDATA[
+ nsDragAndDrop.dragDropSecurityCheck(aEvent, aDragSession, aUri);
+ ]]>
+ </body>
+ </method>
+
+ <field name="_keyEventHandler" readonly="true">
+ <![CDATA[({
+ tabbrowser: this,
+ handleEvent: function handleEvent(aEvent) {
+ if (!aEvent.isTrusted) {
+ // Don't let untrusted events mess with tabs.
+ return;
+ }
+
+ if ('altKey' in aEvent && aEvent.altKey)
+ return;
+#ifdef XP_MACOSX
+ if ('metaKey' in aEvent && aEvent.metaKey) {
+ var offset = 1;
+ switch (aEvent.charCode) {
+ case '}'.charCodeAt(0):
+ offset *= -1;
+ case '{'.charCodeAt(0):
+ if (window.getComputedStyle(this.tabbrowser, null).direction == "ltr")
+ offset *= -1;
+
+ this.tabbrowser.mTabContainer.advanceSelectedTab(offset, true);
+ aEvent.stopPropagation();
+ aEvent.preventDefault();
+ return;
+ }
+ if ('shiftKey' in aEvent && aEvent.shiftKey) {
+ var offset = 1;
+ switch (aEvent.keyCode) {
+ case KeyEvent.DOM_VK_RIGHT:
+ offset *= -1;
+ case KeyEvent.DOM_VK_LEFT:
+ if (window.getComputedStyle(this.tabbrowser, null).direction == "ltr")
+ offset *= -1;
+
+ this.tabbrowser.mTabContainer.advanceSelectedTab(offset, true);
+ aEvent.stopPropagation();
+ aEvent.preventDefault();
+ }
+ return;
+ }
+#else
+ if (('ctrlKey' in aEvent && aEvent.ctrlKey) &&
+ !('shiftKey' in aEvent && aEvent.shiftKey) &&
+ !('metaKey' in aEvent && aEvent.metaKey)) {
+ if (aEvent.keyCode == KeyEvent.DOM_VK_F4 &&
+ this.tabbrowser.mTabBox.handleCtrlPageUpDown) {
+ this.tabbrowser.removeCurrentTab();
+
+ aEvent.stopPropagation();
+ aEvent.preventDefault();
+ return;
+ }
+#endif
+ if (aEvent.originalTarget.localName == "tab") {
+ switch (aEvent.keyCode) {
+ case KeyEvent.DOM_VK_UP:
+ this.tabbrowser.moveTabBackward();
+ break;
+ case KeyEvent.DOM_VK_DOWN:
+ this.tabbrowser.moveTabForward();
+ break;
+ case KeyEvent.DOM_VK_RIGHT:
+ case KeyEvent.DOM_VK_LEFT:
+ this.tabbrowser.moveTabOver(aEvent);
+ break;
+ case KeyEvent.DOM_VK_HOME:
+ this.tabbrowser.moveTabToStart();
+ break;
+ case KeyEvent.DOM_VK_END:
+ this.tabbrowser.moveTabToEnd();
+ break;
+ default:
+ // Stop the keypress event for the above keyboard
+ // shortcuts only.
+ return;
+ }
+ aEvent.stopPropagation();
+ aEvent.preventDefault();
+ }
+ }
+ }
+ })]]>
+ </field>
+
+ <method name="handleEvent">
+ <parameter name="aEvent"/>
+ <body><![CDATA[
+ switch (aEvent.type) {
+ case "sizemodechange":
+ if (this.selectedBrowser && aEvent.target == window) {
+ this.selectedBrowser.docShell.isActive =
+ (window.windowState != window.STATE_MINIMIZED);
+ }
+ break;
+ }
+ ]]></body>
+ </method>
+
+ <field name="_windowActivateHandler" readonly="true">
+ <![CDATA[({
+ tabbrowser: this,
+ handleEvent: function handleEvent() {
+ if ("switchingToPanel" in this.tabbrowser.selectedPanel)
+ this.tabbrowser.selectedPanel.switchingToPanel();
+ }
+ })]]>
+ </field>
+
+ <field name="_windowDeactivateHandler" readonly="true">
+ <![CDATA[({
+ tabbrowser: this,
+ handleEvent: function handleEvent() {
+ if ("switchingAwayFromPanel" in this.tabbrowser.selectedPanel)
+ this.tabbrowser.selectedPanel.switchingAwayFromPanel();
+ }
+ })]]>
+ </field>
+
+ <constructor>
+ <![CDATA[
+ this.mCurrentTab = this.mTabContainer.firstChild;
+ // Dummy tab is not a conversation
+ this.mCurrentTab.linkedTabPanel = this.mPanelContainer.firstChild;
+ this.mCurrentTab.linkedTabPanel.tab = this.mCurrentTab;
+
+ document.addEventListener("keypress", this._keyEventHandler);
+ document.addEventListener("sizemodechange", this);
+ window.addEventListener("deactivate", this._windowDeactivateHandler);
+ window.addEventListener("activate", this._windowActivateHandler);
+
+ var uniqueId = "panel" + Date.now();
+ this.mCurrentTab.linkedTabPanel.id = uniqueId;
+ this.mCurrentTab.linkedPanel = uniqueId;
+ this.mCurrentTab._tPos = 0;
+
+ Services.prefs.addObserver("browser.tabs.autoHide", this._prefObserver, false);
+ Services.prefs.addObserver("messenger.conversations.useSeparateWindowsForMUCs", this._prefObserver, false);
+ ]]>
+ </constructor>
+
+ <destructor>
+ <![CDATA[
+ document.removeEventListener("keypress", this._keyEventHandler);
+ window.removeEventListener("sizemodechange", this);
+ window.removeEventListener("deactivate", this._windowDeactivateHandler);
+ window.removeEventListener("activate", this._windowActivateHandler);
+ Services.prefs.removeObserver("browser.tabs.autoHide", this._prefObserver);
+ Services.prefs.removeObserver("messenger.conversations.useSeparateWindowsForMUCs", this._prefObserver);
+ ]]>
+ </destructor>
+ </implementation>
+ </binding>
+
+ <binding id="tabbrowser-arrowscrollbox" extends="chrome://global/content/bindings/scrollbox.xml#arrowscrollbox-clicktoscroll">
+ <implementation>
+ <!-- Override scrollbox.xml method, since our scrollbox's children are
+ inherited from the binding parent -->
+ <method name="_getScrollableElements">
+ <body><![CDATA[
+ return document.getBindingParent(this).childNodes;
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="underflow"><![CDATA[
+ if (event.detail == 0)
+ return; // Ignore vertical events
+
+ var tabs = document.getBindingParent(this);
+ tabs.removeAttribute("overflow");
+ ]]></handler>
+ <handler event="overflow"><![CDATA[
+ if (event.detail == 0)
+ return; // Ignore vertical events
+
+ var tabs = document.getBindingParent(this);
+ tabs.setAttribute("overflow", "true");
+ this.scrollBoxObject.ensureElementIsVisible(tabs.selectedItem);
+ ]]></handler>
+ </handlers>
+ </binding>
+
+ <binding id="tabbrowser-tabs"
+ extends="chrome://global/content/bindings/tabbox.xml#tabs">
+ <content>
+ <xul:hbox xbl:inherits="overflow,flex" class="tabs-container">
+ <xul:arrowscrollbox anonid="arrowscrollbox" orient="horizontal" flex="1"
+ style="min-width: 1px;" chromedir="&locale.dir;"
+#ifndef XP_MACOSX
+ clicktoscroll="true"
+#endif
+ class="tabbrowser-arrowscrollbox">
+# This is a hack to circumvent bug 472020, otherwise the tabs show up on the
+# right of the newtab button.
+ <children includes="tab"/>
+# This is to ensure anything extensions put here will go before the newtab
+# button, necessary due to the previous hack.
+ <children/>
+ <xul:toolbarbutton class="tabs-newtab-button"
+ command="cmd_newtab" chromedir="&locale.dir;"
+ tooltiptext="&newTabButton.tooltip;"/>
+ </xul:arrowscrollbox>
+ <xul:toolbarbutton class="tabs-newtab-button" anonid="newtab-button"
+ command="cmd_newtab" chromedir="&locale.dir;"
+ tooltiptext="&newTabButton.tooltip;"/>
+ <xul:toolbarbutton class="tabs-alltabs-button" type="menu" anonid="alltabs-button"
+ tooltiptext="&listAllTabs.label;">
+ <xul:menupopup class="tabs-alltabs-popup" anonid="alltabs-popup"
+ position="after_end"/>
+ </xul:toolbarbutton>
+ <xul:toolbarbutton anonid="tabs-closebutton"
+ class="close-button tabs-closebutton"
+ chromedir="&locale.dir;"
+ tooltiptext="&closeTab.label;"/>
+ </xul:hbox>
+ </content>
+ <implementation implements="nsIDOMEventListener">
+ <constructor>
+ <![CDATA[
+ var pb2 = Services.prefs;
+ let tab = this.firstChild;
+ try {
+ this.mTabMinWidth = pb2.getIntPref("browser.tabs.tabMinWidth");
+ tab.minWidth = this.mTabMinWidth;
+ } catch (e) {
+ }
+ try {
+ this.mTabMaxWidth = pb2.getIntPref("browser.tabs.tabMaxWidth");
+ tab.maxWidth = this.mTabMaxWidth;
+ } catch (e) {
+ }
+ try {
+ this.mTabClipWidth = pb2.getIntPref("browser.tabs.tabClipWidth");
+ } catch (e) {
+ }
+ try {
+ this.mCloseButtons = pb2.getIntPref("browser.tabs.closeButtons");
+ } catch (e) {
+ }
+
+ pb2.addObserver("browser.tabs.closeButtons",
+ this._prefObserver, false);
+
+ window.addEventListener("resize", this);
+#ifdef XP_MACOSX
+
+ if (!("WindowDraggingElement" in window))
+ Components.utils.import("resource://gre/modules/WindowDraggingUtils.jsm");
+ let draghandle = new WindowDraggingElement(this.mTabstrip, window);
+ draghandle.mouseDownCheck =
+ function(aEvent) aEvent.originalTarget.localName != "tab";
+#endif
+ ]]>
+ </constructor>
+
+ <destructor>
+ <![CDATA[
+ Services.prefs.removeObserver("browser.tabs.closeButtons",
+ this._prefObserver);
+ ]]>
+ </destructor>
+
+ <field name="mTabstripWidth">0</field>
+
+ <field name="mTabstrip">
+ document.getAnonymousElementByAttribute(this, "anonid", "arrowscrollbox");
+ </field>
+
+ <field name="mTabstripClosebutton">
+ document.getAnonymousElementByAttribute(this, "anonid", "tabs-closebutton");
+ </field>
+
+ <field name="_prefObserver">({
+ tabbox: this,
+
+ observe: function(subject, topic, data)
+ {
+ if (topic == "nsPref:changed") {
+ switch (data) {
+ case "browser.tabs.closeButtons":
+ subject.QueryInterface(Components.interfaces.nsIPrefBranch);
+ this.tabbox.mCloseButtons = subject.getIntPref("browser.tabs.closeButtons");
+ this.tabbox.adjustTabstrip();
+ break;
+ }
+ }
+ },
+
+ QueryInterface: function(aIID)
+ {
+ if (aIID.equals(Components.interfaces.nsIObserver) ||
+ aIID.equals(Components.interfaces.nsISupports))
+ return this;
+ throw Components.results.NS_NOINTERFACE;
+ }
+ });
+ </field>
+ <field name="mTabMinWidth">100</field>
+ <field name="mTabMaxWidth">250</field>
+ <field name="mTabClipWidth">140</field>
+ <field name="mCloseButtons">1</field>
+
+ <method name="addTab">
+ <body><![CDATA[
+ var tab = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "tab");
+ tab.setAttribute("crop", "end");
+ tab.maxWidth = this.mTabMaxWidth;
+ tab.minWidth = this.mTabMinWidth;
+ tab.width = 0;
+ tab.setAttribute("flex", "100");
+ tab.setAttribute("validate", "never");
+ tab.setAttribute("onerror", "this.removeAttribute('image');");
+ tab.className = "tabbrowser-tab";
+
+ this.appendChild(tab);
+
+ if (document.defaultView.getComputedStyle(this, "").direction == "rtl") {
+ /* In RTL UI, the tab is visually added to the left side of the
+ * tabstrip. This means the tabstip has to be scrolled back in
+ * order to make sure the same set of tabs is visible before and
+ * after the new tab is added */
+
+ this.mTabstrip.scrollBoxObject
+ .scrollBy(this.firstChild.boxObject.width, 0);
+ }
+
+ tab._tPos = this.childNodes.length - 1;
+ if (tab._tPos && tab.previousSibling.selected)
+ tab.setAttribute("afterselected", true);
+
+ // |setTimeout| here to ensure we're post reflow
+ var _delayedUpdate = function(aTabContainer) {
+ aTabContainer.adjustTabstrip();
+
+ if (aTabContainer.selectedItem != tab)
+ aTabContainer._notifyBackgroundTab(tab);
+
+ // XXXmano: this is a temporary workaround to bug 343585
+ // We need to manually update the scroll buttons disabled state
+ // if a tab was inserted to the overflow area or removed from it
+ // without any scrolling and when the tabbar has already
+ // overflowed.
+ aTabContainer.mTabstrip._updateScrollButtonsDisabledState();
+ }
+ setTimeout(_delayedUpdate, 0, this);
+
+ // Dispatch a new tab notification. We do this once we're
+ // entirely done, so that things are in a consistent state
+ // even if the event listener opens or closes tabs.
+ var evt = document.createEvent("Events");
+ evt.initEvent("TabOpen", true, false);
+ tab.dispatchEvent(evt);
+
+ return tab;
+ ]]></body>
+ </method>
+
+ <method name="adjustTabstrip">
+ <body><![CDATA[
+ // modes for tabstrip
+ // 0 - activetab = close button on active tab only
+ // 1 - alltabs = close buttons on all tabs
+ // 2 - noclose = no close buttons at all
+ // 3 - closeatend = close button at the end of the tabstrip
+ switch (this.mCloseButtons) {
+ case 0:
+ this.setAttribute("closebuttons", "activetab");
+ break;
+ case 1:
+ var width = this.firstChild.boxObject.width;
+ // 0 width is an invalid value and indicates
+ // an item without display, so ignore.
+ if (width > this.mTabClipWidth || width == 0)
+ this.setAttribute("closebuttons", "alltabs");
+ else
+ this.setAttribute("closebuttons", "activetab");
+ break;
+ case 2:
+ case 3:
+ this.setAttribute("closebuttons", "noclose");
+ break;
+ }
+ this.mTabstripClosebutton.collapsed = this.mCloseButtons != 3;
+ ]]></body>
+ </method>
+
+ <method name="_handleTabSelect">
+ <body><![CDATA[
+ this.mTabstrip.ensureElementIsVisible(this.selectedItem);
+ ]]></body>
+ </method>
+
+ <method name="_fillTrailingGap">
+ <body><![CDATA[
+ try {
+ // if we're at the right side (and not the logical end,
+ // which is why this works for both LTR and RTL)
+ // of the tabstrip, we need to ensure that we stay
+ // completely scrolled to the right side
+
+ var tabStrip = this.mTabstrip;
+ var scrollPos = {};
+ tabStrip.scrollBoxObject.getPosition(scrollPos, {});
+ var scrolledSize = {};
+ tabStrip.scrollBoxObject.getScrolledSize(scrolledSize, {});
+
+ if (scrollPos.value + tabStrip.boxObject.width >=
+ scrolledSize.value) {
+ tabStrip.scrollByPixels(-1);
+ }
+ } catch (e) { }
+ ]]></body>
+ </method>
+
+ <method name="handleEvent">
+ <parameter name="aEvent"/>
+ <body><![CDATA[
+ switch (aEvent.type) {
+ case "resize":
+ var width = this.mTabstrip.boxObject.width;
+ if (width != this.mTabstripWidth) {
+ this.adjustTabstrip();
+ this._fillTrailingGap();
+ this._handleTabSelect();
+ this.mTabstripWidth = width;
+ }
+ break;
+ }
+ ]]></body>
+ </method>
+
+ <field name="mAllTabsPopup">
+ document.getAnonymousElementByAttribute(this,
+ "anonid", "alltabs-popup");
+ </field>
+
+ <field name="_animateElement">
+ this.mTabstrip._scrollButtonDown;
+ </field>
+
+ <method name="_notifyBackgroundTab">
+ <parameter name="aTab"/>
+ <body><![CDATA[
+ var tsbo = this.mTabstrip.scrollBoxObject;
+ var tsboStart = tsbo.screenX;
+ var tsboEnd = tsboStart + tsbo.width;
+
+ var ctbo = aTab.boxObject;
+ var ctboStart = ctbo.screenX;
+ var ctboEnd = ctboStart + ctbo.width;
+
+ // Is the new tab already completely visible?
+ if (tsboStart <= ctboStart && ctboEnd <= tsboEnd)
+ return;
+
+ if (this.mTabstrip.smoothScroll) {
+ var selStart = this.selectedItem.boxObject.screenX;
+ var selEnd = selStart + this.selectedItem.boxObject.width;
+
+ // Can we make both the new tab and the selected tab completely visible?
+ if (Math.max(ctboEnd - selStart, selEnd - ctboStart) <= tsbo.width) {
+ this.mTabstrip.ensureElementIsVisible(aTab);
+ return;
+ }
+
+ this.mTabstrip._smoothScrollByPixels(this.mTabstrip._isLTRScrollbox ?
+ selStart - tsboStart : selEnd - tsboEnd);
+ }
+
+ if (!this._animateElement.hasAttribute("notifybgtab")) {
+ this._animateElement.setAttribute("notifybgtab", "true");
+ setTimeout(function (ele) {
+ ele.removeAttribute("notifybgtab");
+ }, 150, this._animateElement);
+ }
+ ]]></body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="select" action="this._handleTabSelect();"/>
+ </handlers>
+ </binding>
+
+ <!-- alltabs-popup binding
+ This binding relies on the structure of the tabbrowser binding.
+ Therefore it should only be used as a child of the tabs element.
+ This binding is exposed as a pseudo-public-API so themes can customize
+ the tabbar appearance without having to be scriptable
+ (see globalBindings.xml in Pinstripe for example).
+ -->
+
+ <binding id="tabbrowser-alltabs-popup"
+ extends="chrome://global/content/bindings/popup.xml#popup">
+ <implementation implements="nsIDOMEventListener">
+ <field name="_xulWindow">
+ null
+ </field>
+
+ <constructor><![CDATA[
+ // We cannot cache the XULBrowserWindow object itself since it might
+ // be set after this binding is constructed.
+ try {
+ this._xulWindow =
+ window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIWebNavigation)
+ .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
+ .treeOwner
+ .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIXULWindow);
+ }
+ catch(ex) { }
+ ]]></constructor>
+
+ <method name="_menuItemOnCommand">
+ <parameter name="aEvent"/>
+
+ <body><![CDATA[
+ var tabcontainer = document.getBindingParent(this);
+ tabcontainer.selectedItem = aEvent.target.tab;
+ ]]></body>
+ </method>
+
+ <method name="_tabOnTabClose">
+ <parameter name="aEvent"/>
+
+ <body><![CDATA[
+ var menuItem = aEvent.target.mCorrespondingMenuitem;
+ if (menuItem)
+ this.removeChild(menuItem);
+ ]]></body>
+ </method>
+
+ <method name="handleEvent">
+ <parameter name="aEvent"/>
+ <body><![CDATA[
+ if (!aEvent.isTrusted)
+ return;
+
+ switch (aEvent.type) {
+ case "command":
+ this._menuItemOnCommand(aEvent);
+ break;
+ case "TabClose":
+ this._tabOnTabClose(aEvent);
+ break;
+ case "TabOpen":
+ this._createTabMenuItem(aEvent.originalTarget);
+ break;
+ case "scroll":
+ this._updateTabsVisibilityStatus();
+ break;
+ }
+ ]]></body>
+ </method>
+
+ <method name="_updateTabsVisibilityStatus">
+ <body><![CDATA[
+ var tabContainer = document.getBindingParent(this);
+ // We don't want menu item decoration unless there is overflow.
+ if (tabContainer.getAttribute("overflow") != "true")
+ return;
+
+ var tabstripBO = tabContainer.mTabstrip.scrollBoxObject;
+ for (var i = 0; i < this.childNodes.length; i++) {
+ var curTabBO = this.childNodes[i].tab.boxObject;
+ if (curTabBO.screenX >= tabstripBO.screenX &&
+ curTabBO.screenX + curTabBO.width <= tabstripBO.screenX + tabstripBO.width)
+ this.childNodes[i].setAttribute("tabIsVisible", "true");
+ else
+ this.childNodes[i].removeAttribute("tabIsVisible");
+ }
+ ]]></body>
+ </method>
+
+ <method name="_createTabMenuItem">
+ <parameter name="aTab"/>
+ <body><![CDATA[
+ var menuItem = document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "menuitem");
+
+ menuItem.setAttribute("class", "menuitem-iconic alltabs-item");
+
+ menuItem.setAttribute("label", aTab.label);
+ menuItem.setAttribute("crop", aTab.getAttribute("crop"));
+ menuItem.setAttribute("image", aTab.getAttribute("image"));
+
+ ["typing", "typed", "status", "chat",
+ "attention", "unread", "prpl", "type"].forEach(function (aAttr) {
+ if (aTab.hasAttribute(aAttr))
+ menuItem.setAttribute(aAttr, aTab.getAttribute(aAttr));
+ });
+ if (aTab.hasAttribute("typing"))
+ menuItem.setAttribute("typing", aTab.getAttribute("typing"));
+ if (aTab.selected)
+ menuItem.setAttribute("selected", "true");
+
+ // Keep some attributes of the menuitem in sync with its
+ // corresponding tab (e.g. the tab label)
+ aTab.mCorrespondingMenuitem = menuItem;
+ aTab.addEventListener("TabClose", this);
+ menuItem.tab = aTab;
+ menuItem.addEventListener("command", this);
+
+ this.appendChild(menuItem);
+ return menuItem;
+ ]]></body>
+ </method>
+ </implementation>
+
+ <handlers>
+ <handler event="popupshowing">
+ <![CDATA[
+ // set up the menu popup
+ var tabcontainer = document.getBindingParent(this);
+ var tabs = tabcontainer.childNodes;
+
+ // Listen for changes in the tab bar.
+ tabcontainer.addEventListener("TabOpen", this);
+ tabcontainer.mTabstrip.addEventListener("scroll", this);
+
+ for (var i = 0; i < tabs.length; i++) {
+ this._createTabMenuItem(tabs[i]);
+ }
+ this._updateTabsVisibilityStatus();
+ ]]></handler>
+
+ <handler event="popuphiding">
+ <![CDATA[
+ // clear out the menu popup and remove the listeners
+ while (this.hasChildNodes()) {
+ var menuItem = this.lastChild;
+ menuItem.removeEventListener("command", this, false);
+ menuItem.tab.removeEventListener("TabClose", this, false);
+ menuItem.tab.mCorrespondingMenuitem = null;
+ this.removeChild(menuItem);
+ }
+ var tabcontainer = document.getBindingParent(this);
+ tabcontainer.mTabstrip.removeEventListener("scroll", this, false);
+ tabcontainer.removeEventListener("TabOpen", this, false);
+ window.XULBrowserWindow.setOverLink("", null);
+ ]]></handler>
+
+ <handler event="DOMMenuItemActive">
+ <![CDATA[
+ if (!this._xulWindow || !this._xulWindow.XULBrowserWindow)
+ return;
+
+ var tab = event.target.tab;
+ if (tab)
+ this._xulWindow.XULBrowserWindow.setOverLink(tab.label, null);
+ ]]></handler>
+
+ <handler event="DOMMenuItemInactive">
+ <![CDATA[
+ if (!this._xulWindow || !this._xulWindow.XULBrowserWindow)
+ return;
+
+ this._xulWindow.XULBrowserWindow.setOverLink("", null);
+ ]]></handler>
+
+ </handlers>
+ </binding>
+
+ <!-- close-tab-button binding
+ This binding relies on the structure of the tabbrowser binding.
+ Therefore it should only be used as a child of the tab or the tabs
+ element (in both cases, when they are anonymous nodes of <tabbrowser>).
+ This binding is exposed as a pseudo-public-API so themes can customize
+ the tabbar appearance without having to be scriptable
+ (see globalBindings.xml in Pinstripe for example).
+ -->
+ <binding id="tabbrowser-close-tab-button"
+ extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-image">
+ <handlers>
+ <handler event="click" button="0"><![CDATA[
+ var bindingParent = document.getBindingParent(this);
+ if (bindingParent) {
+ var tabbedBrowser = document.getBindingParent(bindingParent);
+ if (bindingParent.localName == "tab") {
+ /* The only sequence in which a second click event (i.e. dblclik)
+ * can be dispatched on an in-tab close button is when it is shown
+ * after the first click (i.e. the first click event was dispatched
+ * on the tab). This happens when we show the close button only on
+ * the active tab. (bug 352021)
+ * The only sequence in which a third click event can be dispatched
+ * on an in-tab close button is when the tab was opened with a
+ * double click on the tabbar. (bug 378344)
+ * In both cases, it is most likely that the close button area has
+ * been accidentally clicked, therefore we do not close the tab.
+ *
+ * We don't want to ignore processing of more than one click event,
+ * though, since the user might actually be repeatedly clicking to
+ * close many tabs at once.
+ */
+ if (event.detail > 1 && !this._ignoredClick) {
+ this._ignoredClick = true;
+ return;
+ }
+
+ // Reset the "ignored click" flag
+ this._ignoredClick = false;
+
+ tabbedBrowser.removeTab(bindingParent);
+ tabbedBrowser._blockDblClick = true;
+
+ /* XXXmano hack (see bug 343628):
+ * Since we're removing the event target, if the user
+ * double-clicks this button, the dblclick event will be dispatched
+ * with the tabbar as its event target (and explicit/originalTarget),
+ * which treats that as a mouse gesture for opening a new tab.
+ * In this context, we're manually blocking the dblclick event
+ * (see onTabBarDblClick).
+ */
+ var clickedOnce = false;
+ let enableDblClick = function (event) {
+ if (event.detail == 1 && !clickedOnce) {
+ clickedOnce = true;
+ return;
+ }
+ setTimeout(function() {
+ tabbedBrowser._blockDblClick = false;
+ }, 0);
+ tabbedBrowser.removeEventListener("click", enableDblClick, false);
+ };
+ tabbedBrowser.addEventListener("click", enableDblClick);
+ }
+ else // "tabs"
+ tabbedBrowser.removeCurrentTab();
+ }
+ ]]></handler>
+ <handler event="dblclick" button="0" phase="capturing">
+ // for the one-close-button case
+ event.stopPropagation();
+ </handler>
+ </handlers>
+ </binding>
+
+ <binding id="tabbrowser-tab" display="xul:hbox"
+ extends="chrome://global/content/bindings/tabbox.xml#tab">
+ <content chromedir="&locale.dir;">
+ <xul:stack mousethrough="always" class="tab-stack" flex="1">
+ <xul:hbox xbl:inherits="selected" class="tab-background">
+ <xul:hbox xbl:inherits="selected" class="tab-background-start"/>
+ <xul:hbox xbl:inherits="selected" class="tab-background-middle"/>
+ <xul:hbox xbl:inherits="selected" class="tab-background-end"/>
+ </xul:hbox>
+ <xul:hbox mousethrough="always" xbl:inherits="selected" class="tab-content" align="center">
+ <xul:image mousethrough="always" xbl:inherits="selected,validate,src=image" class="tab-icon-image"/>
+ <xul:label mousethrough="always" flex="1" xbl:inherits="value=label,crop,accesskey" class="tab-text"/>
+ <xul:toolbarbutton anonid="close-button" mousethrough="never" tabindex="-1" class="tab-close-button" tooltiptext="&closeTab.label;"/>
+ </xul:hbox>
+ </xul:stack>
+ </content>
+
+ <implementation>
+ <field name="mOverCloseButton">false</field>
+ <field name="mCorrespondingMenuitem">null</field>
+
+ <constructor><![CDATA[
+ const kAttrs = ["label", "tooltip", "selected", "crop", "typing",
+ "typed", "unread", "attention", "status", "chat",
+ "image", "prpl"];
+ MutationObserver(function(aMutations) {
+ for (let mutation of aMutations) {
+ let attr = mutation.attributeName;
+
+ if (attr == "label") {
+ if (window.getTabBrowser)
+ getTabBrowser().updateTitlebar();
+ // Update our tooltiptext, but only if a tooltip hasn't been set.
+ if (!this.hasAttribute("tooltip"))
+ this.setAttribute("tooltiptext", this.getAttribute(attr));
+ }
+ else if (attr == "tooltip") {
+ if (this.hasAttribute(attr)) {
+ // Tooltip was added. Stop using our label as tooltiptext.
+ this.removeAttribute("tooltiptext");
+ }
+ else {
+ // Tooltip was removed. Switch to using our label as tooltiptext.
+ this.setAttribute("tooltiptext", this.getAttribute("label"));
+ }
+ }
+ else if (attr == "selected") {
+ if (this.hasAttribute(attr))
+ this.linkedTabPanel.setAttribute(attr, this.getAttribute(attr));
+ else {
+ this.linkedTabPanel.removeAttribute(attr);
+ if (this.linkedTabPanel.switchingAwayFromPanel)
+ this.linkedTabPanel.switchingAwayFromPanel();
+ }
+ }
+
+ // Update the item in the all tabs menu if it's currently shown.
+ let menuitem = this.mCorrespondingMenuitem;
+ if (menuitem && attr != "tooltip") {
+ if (this.hasAttribute(attr))
+ menuitem.setAttribute(attr, this.getAttribute(attr));
+ else
+ menuitem.removeAttribute(attr);
+ }
+ }
+ }.bind(this)).observe(this, {attributes: true,
+ attributeFilter: kAttrs});
+ ]]></constructor>
+ </implementation>
+
+ <handlers>
+ <handler event="mouseover">
+ var anonid = event.originalTarget.getAttribute("anonid");
+ if (anonid == "close-button")
+ this.mOverCloseButton = true;
+ </handler>
+ <handler event="mouseout">
+ var anonid = event.originalTarget.getAttribute("anonid");
+ if (anonid == "close-button")
+ this.mOverCloseButton = false;
+ </handler>
+ <handler event="dragstart" phase="capturing">
+ this.style.MozUserFocus = '';
+ </handler>
+ <handler event="mousedown" button="0" phase="capturing">
+ <![CDATA[
+ if (this.mOverCloseButton) {
+ event.stopPropagation();
+ }
+ else {
+ // If this tab is not currently selected, call the onSelect method of
+ // the current tab to mark the conversation as read before leaving it.
+ // This is necessary when Instantbird (and therefore the current tab)
+ // did not have focus before this click.
+ if (!this.linkedTabPanel.hasAttribute("selected")) {
+ let panel = document.getBindingParent(this).selectedPanel;
+ if ("onSelect" in panel)
+ panel.onSelect();
+ }
+
+ this.style.MozUserFocus = 'ignore';
+ this.clientTop; // just using this to flush style updates
+ }
+ ]]>
+ </handler>
+ <handler event="mousedown" button="1">
+ this.style.MozUserFocus = 'ignore';
+ this.clientTop;
+ </handler>
+ <handler event="mousedown" button="2">
+ this.style.MozUserFocus = 'ignore';
+ this.clientTop;
+ </handler>
+ <handler event="mouseup">
+ this.style.MozUserFocus = '';
+ </handler>
+ </handlers>
+ </binding>
+
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/content/utilities.js
@@ -0,0 +1,13 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+Components.utils.import("resource:///modules/imServices.jsm");
+
+function getIter(aEnumerator)
+{
+ while (aEnumerator.hasMoreElements())
+ yield aEnumerator.getNext();
+}
new file mode 100644
--- /dev/null
+++ b/im/content/viewlog.css
@@ -0,0 +1,7 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#findbar .findbar-closebutton {
+ display: none;
+}
new file mode 100644
--- /dev/null
+++ b/im/content/viewlog.js
@@ -0,0 +1,365 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const Cu = Components.utils;
+
+Cu.import("resource://gre/modules/Services.jsm");
+
+// viewZoomOverlay.js and macgestures.js use this.
+function getBrowser() {
+ let deck = document.getElementById("browserDeck");
+ let id = (parseInt(deck.selectedIndex, 10) ? "conv" : "text") + "-browser";
+ let browser = document.getElementById(id);
+ browser.selectedBrowser = browser; // for macgestures.js
+ return browser;
+}
+
+var logWindow = {
+ load: function lw_load() {
+ let displayname = window.arguments[1];
+ if (displayname) {
+ let bundle = document.getElementById("bundle_instantbird");
+ document.title = bundle.getFormattedString("logs", [displayname]) +
+ document.documentElement.getAttribute("titlemenuseparator") +
+ document.documentElement.getAttribute("titlemodifier");
+ }
+
+ // Prevent closing the findbar, go back to logTree instead.
+ let findbar = document.getElementById("findbar");
+ let logTree = document.getElementById("logTree");
+ findbar.close = function() logTree.focus();
+ // Ensure the findbar has something to look at.
+ let browser = document.getElementById("text-browser");
+ findbar.browser = browser;
+ findbar.open(); // Requires findbar.browser to be set
+
+ document.getElementById("text-browser")
+ .addEventListener("DOMContentLoaded", logWindow.contentLoaded, true);
+ document.getElementById("conv-browser").progressBar =
+ document.getElementById("browserProgress");
+
+ logTree.focus();
+ let treeView = logWindow._treeView =
+ new chatLogTreeView(logTree, window.arguments[0].logs);
+ // Select the first line.
+ let selectIndex = 0;
+ if (treeView.isContainer(selectIndex)) {
+ // If the first line is a group, open it and select the
+ // next line instead.
+ treeView.toggleOpenState(selectIndex++);
+ }
+ logTree.view.selection.select(selectIndex);
+
+ // If the log viewer window already existed, it may be hidden, so bring
+ // the window to the front.
+ window.focus();
+ },
+
+ pendingLoad: false,
+ onselect: function lw_onselect() {
+ let selection = this._treeView.selection;
+ let currentIndex = selection.currentIndex;
+ // The current (focused) row may not be actually selected...
+ if (!selection.isSelected(currentIndex))
+ return;
+
+ let log = this._treeView._rowMap[currentIndex].log;
+ if (!log)
+ return;
+ if (this._displayedLog && this._displayedLog == log.path)
+ return;
+ this._displayedLog = log.path;
+
+ let deck = document.getElementById("browserDeck");
+ let findbar = document.getElementById("findbar");
+ if (log.format == "json") {
+ let conv = log.getConversation();
+ if (!conv) {
+ // Empty or completely broken json log file.
+ deck.selectedIndex = 2;
+ // Ensure the findbar looks at an empty file.
+ let browser = document.getElementById("text-browser");
+ findbar.browser = browser;
+ browser.loadURI("about:blank");
+ return;
+ }
+ deck.selectedIndex = 1;
+ let browser = document.getElementById("conv-browser");
+ findbar.browser = browser;
+ FullZoom.applyPrefValue();
+ if (this.pendingLoad) {
+ browser._conv = conv;
+ return;
+ }
+ browser.init(conv);
+ this.pendingLoad = true;
+ Services.obs.addObserver(this, "conversation-loaded", false);
+ }
+ else {
+ // Legacy text log.
+ deck.selectedIndex = 0;
+ let browser = document.getElementById("text-browser");
+ findbar.browser = browser;
+ FullZoom.applyPrefValue();
+ browser.docShell.forcedCharset =
+ browser.mAtomService.getAtom("UTF-8");
+ let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
+ file.initWithPath(log.path);
+ browser.loadURI(Services.io.newFileURI(file).spec);
+ }
+ },
+
+ _colorCache: {},
+ // Duplicated code from conversation.xml :-(
+ _computeColor: function(aName) {
+ if (Object.prototype.hasOwnProperty.call(this._colorCache, aName))
+ return this._colorCache[aName];
+
+ // Compute the color based on the nick
+ var nick = aName.match(/[a-zA-Z0-9]+/);
+ nick = nick ? nick[0].toLowerCase() : nick = aName;
+ var weight = 10;
+ var res = 0;
+ for (var i = 0; i < nick.length; ++i) {
+ var char = nick.charCodeAt(i) - 47;
+ if (char > 10)
+ char -= 39;
+ // now char contains a value between 1 and 36
+ res += char * weight;
+ weight *= 0.52; //arbitrary
+ }
+ return (this._colorCache[aName] = Math.round(res) % 360);
+ },
+ observe: function(aSubject, aTopic, aData) {
+ let browser = document.getElementById("conv-browser");
+ if (aTopic != "conversation-loaded" || aSubject != browser)
+ return;
+ browser._autoScrollEnabled = false;
+ browser.contentDocument.getElementById("Chat").classList.add("log");
+
+ let count = {};
+ let messages = browser._conv.getMessagesEnumerator(count);
+ browser.getPendingMessagesCount = function() count.value;
+ browser.getNextPendingMessage = function() {
+ if (!messages.hasMoreElements()) {
+ delete browser.getNextPendingMessage;
+ return null;
+ }
+
+ let msg = messages.getNext();
+ if (!msg.system && browser._conv.isChat)
+ msg.color = "color: hsl(" + logWindow._computeColor(msg.who) + ", 100%, 40%);";
+ return {msg: msg, context: false, firstUnread: false};
+ };
+ browser.delayedDisplayPendingMessages();
+ delete this.pendingLoad;
+ Services.obs.removeObserver(this, "conversation-loaded");
+ },
+
+ contentLoaded: function lw_contentLoaded() {
+ let browser = document.getElementById("text-browser");
+ if (browser.currentURI.spec == "about:blank")
+ return;
+ let doc = browser.contentDocument;
+ let link = doc.createElement("link");
+ link.type = "text/css";
+ link.rel = "stylesheet";
+ link.href = "data:text/css,pre{white-space: pre-wrap;word-wrap: break-word;}.ib-img-smile {vertical-align: text-bottom;}";
+ doc.getElementsByTagName("head")[0].appendChild(link);
+
+ let elt = doc.getElementsByTagName("pre")[0].firstChild;
+ if (!elt) {
+ // Text log file is empty.
+ document.getElementById("browserDeck").selectedIndex = 2;
+ return;
+ }
+ if (!("smileTextNode" in window))
+ Cu.import("resource:///modules/imSmileys.jsm");
+ smileTextNode(elt);
+ }
+};
+
+function chatLogTreeGroupItem(aTitle, aLogItems) {
+ this._title = aTitle;
+ this._children = aLogItems;
+ for each (let child in this._children)
+ child._parent = this;
+ this._open = false;
+}
+chatLogTreeGroupItem.prototype = {
+ getText: function() this._title,
+ get id() this._title,
+ get open() this._open,
+ get level() 0,
+ get _parent() null,
+ get children() this._children,
+ getProperties: function(aProps) {}
+};
+
+function chatLogTreeLogItem(aLog, aText, aLevel) {
+ this.log = aLog;
+ this._text = aText;
+ this._level = aLevel;
+}
+chatLogTreeLogItem.prototype = {
+ getText: function() this._text,
+ get id() this.log.title,
+ get open() false,
+ get level() this._level,
+ get children() [],
+ getProperties: function(aProps) {}
+};
+
+function chatLogTreeView(aTree, aLogs) {
+ this._tree = aTree;
+ this._logs = aLogs;
+ this._tree.view = this;
+ this._rebuild();
+}
+chatLogTreeView.prototype = {
+ __proto__: new PROTO_TREE_VIEW(),
+
+ _rebuild: function cLTV__rebuild() {
+ // Some date helpers...
+ const kDayInMsecs = 24 * 60 * 60 * 1000;
+ const kWeekInMsecs = 7 * kDayInMsecs;
+ const kTwoWeeksInMsecs = 2 * kWeekInMsecs;
+
+ // Drop the old rowMap.
+ if (this._tree)
+ this._tree.rowCountChanged(0, -this._rowMap.length);
+ this._rowMap = [];
+
+ // Used to show the dates in the log list in the locale of the application.
+ let chatBundle = document.getElementById("bundle_instantbird");
+ let dateFormatBundle = document.getElementById("bundle_dateformat");
+ let placesBundle = document.getElementById("bundle_places");
+ let appLocaleCode = Services.prefs.getCharPref("general.useragent.locale");
+ let dts = Cc["@mozilla.org/intl/scriptabledateformat;1"].getService(Ci.nsIScriptableDateFormat);
+ let formatDate = function(aDate) {
+ return dts.FormatDate(appLocaleCode, dts.dateFormatShort, aDate.getFullYear(),
+ aDate.getMonth() + 1, aDate.getDate());
+ };
+ let formatDateTime = function(aDate) {
+ return dts.FormatDateTime(appLocaleCode, dts.dateFormatShort,
+ dts.timeFormatNoSeconds, aDate.getFullYear(),
+ aDate.getMonth() + 1, aDate.getDate(),
+ aDate.getHours(), aDate.getMinutes(), 0);
+ };
+ let formatMonthYear = function(aDate) {
+ let month = formatMonth(aDate);
+ return placesBundle.getFormattedString("finduri-MonthYear",
+ [month, aDate.getFullYear()]);
+ };
+ let formatMonth = function(aDate)
+ dateFormatBundle.getString("month." + (aDate.getMonth() + 1) + ".name");
+ let formatWeekday = function(aDate)
+ dateFormatBundle.getString("day." + (aDate.getDay() + 1) + ".name");
+
+ let nowDate = new Date();
+ let todayDate = new Date(nowDate.getFullYear(), nowDate.getMonth(),
+ nowDate.getDate());
+
+ // The keys used in the 'firstgroups' object should match string ids.
+ // The order is the reverse of that in which they will appear
+ // in the logTree.
+ let firstgroups = {
+ previousWeek: [],
+ currentWeek: [],
+ yesterday: [],
+ today: []
+ };
+
+ // today and yesterday are treated differently, because for JSON logs they
+ // represent individual logs, and are not "groups".
+ let today = null, yesterday = null;
+
+ // Build a chatLogTreeLogItem for each log, and put it in the right group.
+ let groups = {};
+ for each (let log in getIter(this._logs)) {
+ let logDate = new Date(log.time * 1000);
+ // Calculate elapsed time between the log and 00:00:00 today.
+ let timeFromToday = todayDate - logDate;
+ let isJSON = log.format == "json";
+ let title = (isJSON ? formatDate : formatDateTime)(logDate);
+ let group;
+ if (timeFromToday <= 0) {
+ if (isJSON) {
+ today = new chatLogTreeLogItem(log, chatBundle.getString("log.today"), 0);
+ continue;
+ }
+ group = firstgroups.today;
+ }
+ else if (timeFromToday <= kDayInMsecs) {
+ if (isJSON) {
+ yesterday = new chatLogTreeLogItem(log, chatBundle.getString("log.yesterday"), 0);
+ continue;
+ }
+ group = firstgroups.yesterday;
+ }
+ // Note that the 7 days of the current week include today.
+ else if (timeFromToday <= kWeekInMsecs - kDayInMsecs) {
+ group = firstgroups.currentWeek;
+ if (isJSON)
+ title = formatWeekday(logDate);
+ }
+ else if (timeFromToday <= kTwoWeeksInMsecs - kDayInMsecs)
+ group = firstgroups.previousWeek;
+ else {
+ logDate.setHours(0);
+ logDate.setMinutes(0);
+ logDate.setSeconds(0);
+ logDate.setDate(1);
+ let groupID = logDate.toISOString();
+ if (!(groupID in groups)) {
+ let groupname;
+ if (logDate.getFullYear() == nowDate.getFullYear()) {
+ if (logDate.getMonth() == nowDate.getMonth())
+ groupname = placesBundle.getString("finduri-AgeInMonths-is-0");
+ else
+ groupname = formatMonth(logDate);
+ }
+ else
+ groupname = formatMonthYear(logDate);
+ groups[groupID] = {
+ entries: [],
+ name: groupname
+ };
+ }
+ group = groups[groupID].entries;
+ }
+ group.push(new chatLogTreeLogItem(log, title, 1));
+ }
+
+ let groupIDs = Object.keys(groups).sort().reverse();
+
+ // Add firstgroups to groups and groupIDs.
+ for each (let [groupID, group] in Iterator(firstgroups)) {
+ if (!group.length)
+ continue;
+ groupIDs.unshift(groupID);
+ groups[groupID] = {
+ entries: firstgroups[groupID],
+ name: chatBundle.getString("log." + groupID)
+ };
+ }
+
+ // Build tree.
+ if (today)
+ this._rowMap.push(today);
+ if (yesterday)
+ this._rowMap.push(yesterday);
+ groupIDs.forEach(function (aGroupID) {
+ let group = groups[aGroupID];
+ group.entries.sort(function(l1, l2) l2.log.time - l1.log.time);
+ this._rowMap.push(new chatLogTreeGroupItem(group.name, group.entries));
+ }, this);
+
+ // Finally, notify the tree.
+ if (this._tree)
+ this._tree.rowCountChanged(0, this._rowMap.length);
+ }
+};
+
+this.addEventListener("load", logWindow.load);
new file mode 100644
--- /dev/null
+++ b/im/content/viewlog.xul
@@ -0,0 +1,136 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/viewlog.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/viewlog.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/instantbird.css" type="text/css"?>
+
+<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
+#ifdef XP_MACOSX
+<?xul-overlay href="chrome://instantbird/content/menus.xul"?>
+#endif
+
+<!DOCTYPE window [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+ <!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd">
+ %textcontextDTD;
+]>
+
+<window
+ id = "logWindow"
+ windowtype="Messenger:logs"
+ title = "&logsWindow.title;"
+ titlemenuseparator="&logsWindow.titlemodifiermenuseparator;"
+ titlemodifier="&logsWindow.titlemodifier;"
+ width = "650"
+ height = "600"
+ persist= "width height screenX screenY"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/jsTreeView.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/viewlog.js"/>
+#ifdef XP_MACOSX
+ <script type="application/javascript" src="chrome://instantbird/content/macgestures.js"/>
+#else
+ <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
+#endif
+ <script type="application/javascript" src="chrome://global/content/viewZoomOverlay.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/convZoom.js"/>
+
+#ifdef XP_MACOSX
+#include menus.xul.inc
+#endif
+
+ <commandset id="logsCommands">
+ <command id="cmd_close" oncommand="window.close();"/>
+ <command id="cmd_textZoomReduce" oncommand="FullZoom.reduce();"/>
+ <command id="cmd_textZoomEnlarge" oncommand="FullZoom.enlarge();"/>
+ <command id="cmd_textZoomReset" oncommand="FullZoom.reset();"/>
+ <command id="cmd_find"
+ oncommand="document.getElementById('findbar').onFindCommand();"/>
+ <command id="cmd_findAgain"
+ oncommand="document.getElementById('findbar').onFindAgainCommand(false);"/>
+ <command id="cmd_findPrevious"
+ oncommand="document.getElementById('findbar').onFindAgainCommand(true);"/>
+
+ <commandset id="editMenuCommands"/>
+ </commandset>
+
+ <keyset id="logsKeys">
+ <key id="key_close" key="w" modifiers="accel" command="cmd_close"/>
+ <key id="key_close2" keycode="VK_ESCAPE" command="cmd_close"/>
+ <key id="key_textZoomEnlarge" key="&textEnlarge.commandkey;" command="cmd_textZoomEnlarge" modifiers="accel"/>
+ <key id="key_textZoomEnlarge2" key="&textEnlarge.commandkey2;" command="cmd_textZoomEnlarge" modifiers="accel"/>
+ <key id="key_textZoomEnlarge3" key="&textEnlarge.commandkey3;" command="cmd_textZoomEnlarge" modifiers="accel"/>
+ <key id="key_textZoomReduce" key="&textReduce.commandkey;" command="cmd_textZoomReduce" modifiers="accel"/>
+ <key id="key_textZoomReduce2" key="&textReduce.commandkey2;" command="cmd_textZoomReduce" modifiers="accel"/>
+ <key id="key_textZoomReset" key="&textReset.commandkey;" command="cmd_textZoomReset" modifiers="accel"/>
+ <key id="key_textZoomReset2" key="&textReset.commandkey2;" command="cmd_textZoomReset" modifiers="accel"/>
+ <key id="key_find" key="&findOnCmd.commandkey;" command="cmd_find" modifiers="accel"/>
+ <key id="key_findAgain" key="&findAgainCmd.commandkey;" command="cmd_findAgain" modifiers="accel"/>
+ <key id="key_findPrevious" key="&findAgainCmd.commandkey;" command="cmd_findPrevious" modifiers="accel,shift"/>
+ <key keycode="&findAgainCmd.commandkey2;" command="cmd_findAgain"/>
+ <key keycode="&findAgainCmd.commandkey2;" command="cmd_findPrevious" modifiers="shift"/>
+ </keyset>
+
+ <stringbundleset id="stringbundleset">
+ <stringbundle id="bundle_instantbird" src="chrome://instantbird/locale/instantbird.properties"/>
+ <stringbundle id="bundle_dateformat" src="chrome://global/locale/dateFormat.properties"/>
+ <stringbundle id="bundle_places" src="chrome://places/locale/places.properties"/>
+ </stringbundleset>
+
+ <popupset id="mainPopupSet">
+ <tooltip id="aHTMLTooltip" page="true"/>
+ <menupopup id="contentAreaContextMenu">
+ <menuitem id="context-copy"
+ label="©Cmd.label;"
+ accesskey="©Cmd.accesskey;"
+ command="cmd_copy"/>
+ <menuitem id="context-selectall"
+ label="&selectAllCmd.label;"
+ accesskey="&selectAllCmd.accesskey;"
+ command="cmd_selectAll"/>
+ </menupopup>
+ </popupset>
+
+ <hbox flex="1">
+ <tree id="logTree" width="160" hidecolumnpicker="true"
+ seltype="single" context="logTreeContext"
+ onselect="logWindow.onselect();">
+ <treecols>
+ <treecol id="logCol" flex="1" primary="true" hideheader="true"
+ crop="center" ignorecolumnpicker="true"/>
+ </treecols>
+ <treechildren/>
+ </tree>
+ <splitter/>
+ <vbox flex="1">
+ <deck flex="1" id="browserDeck" selectedIndex="0">
+ <browser id="text-browser" type="content"
+ context="contentAreaContextMenu" tooltip="aHTMLTooltip"
+ disablehistory="true" src="about:blank" flex="1"/>
+ <vbox flex="1">
+ <browser id="conv-browser" type="content-conversation" flex="1"
+ context="contentAreaContextMenu" tooltip="aHTMLTooltip"/>
+ <progressmeter id="browserProgress" hidden="true"/>
+ </vbox>
+ <vbox flex="1" id="corruptLogScreen" align="center" pack="center">
+ <hbox id="corruptLogBox">
+ <image id="corruptLogImage"/>
+ <vbox id="corruptLogInnerBox" align="center" pack="center" flex="1">
+ <description id="corruptLogDesc">&logsWindow.corruptlogfile;</description>
+ </vbox>
+ </hbox>
+ </vbox>
+ </deck>
+ <findbar id="findbar"/>
+ </vbox>
+ </hbox>
+
+</window>
new file mode 100644
--- /dev/null
+++ b/im/installer/Makefile.in
@@ -0,0 +1,148 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+STANDALONE_MAKEFILE := 1
+
+include $(topsrcdir)/config/rules.mk
+
+MOZ_PKG_REMOVALS = $(srcdir)/removed-files.in
+
+MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in
+# Some files have been already bundled with xulrunner
+ifndef SYSTEM_LIBXUL
+MOZ_PKG_FATAL_WARNINGS = 1
+endif
+
+MOZ_NONLOCALIZED_PKG_LIST = \
+ xpcom \
+ im \
+ $(NULL)
+
+MOZ_LOCALIZED_PKG_LIST = $(AB_CD)
+
+DEFINES += -DAB_CD=$(AB_CD) -DMOZ_APP_NAME=$(MOZ_APP_NAME) -DPREF_DIR=$(PREF_DIR)
+
+ifdef MOZ_DEBUG
+DEFINES += -DMOZ_DEBUG=1
+endif
+
+ifdef MOZ_ENABLE_GNOME_COMPONENT
+DEFINES += -DMOZ_ENABLE_GNOME_COMPONENT=1
+endif
+
+ifeq (gtk2, $(MOZ_WIDGET_TOOLKIT))
+DEFINES += -DMOZ_GTK2=1
+endif
+
+ifdef _MSC_VER
+DEFINES += -D_MSC_VER=$(_MSC_VER)
+endif
+
+DEFINES += -DJAREXT=
+
+ifdef MOZ_ANGLE_RENDERER
+DEFINES += -DMOZ_ANGLE_RENDERER=$(MOZ_ANGLE_RENDERER)
+DEFINES += -DMOZ_D3DCOMPILER_DLL=$(MOZ_D3DCOMPILER_DLL)
+endif
+
+ifdef MOZ_UPDATER
+DEFINES += -DMOZ_UPDATER=1
+endif
+
+ifdef MOZ_NATIVE_NSPR
+DEFINES += -DMOZ_NATIVE_NSPR=1
+endif
+
+ifdef MOZ_NATIVE_NSS
+DEFINES += -DMOZ_NATIVE_NSS=1
+endif
+
+DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME)
+
+# Set MSVC dlls version to package, if any.
+ifdef WIN32_REDIST_DIR
+DEFINES += -DMOZ_MSVC_REDIST=$(_MSC_VER)
+endif
+
+ifneq (,$(filter WINNT Darwin Android,$(OS_TARGET)))
+DEFINES += -DMOZ_SHARED_MOZGLUE=1
+endif
+
+ifdef NECKO_WIFI
+DEFINES += -DNECKO_WIFI
+endif
+
+ifdef MOZ_PKG_MANIFEST_P
+MOZ_PKG_MANIFEST = package-manifest
+
+$(MOZ_PKG_MANIFEST): $(MOZ_PKG_MANIFEST_P) $(GLOBAL_DEPS)
+ $(call py_action,preprocessor,$(DEFINES) $(ACDEFINES) $< -o $@)
+
+GARBAGE += $(MOZ_PKG_MANIFEST)
+endif
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+MOZ_PKG_MAC_DSSTORE=branding/dsstore
+MOZ_PKG_MAC_BACKGROUND=branding/background.png
+MOZ_PKG_MAC_ICON=branding/disk.icns
+MOZ_PKG_MAC_EXTRA=--symlink "/Applications:/ "
+endif
+
+NON_OMNIJAR_FILES =
+
+ifndef LIBXUL_SDK
+INSTALL_SDK = 1
+endif
+
+GENERATE_CACHE=1
+
+include $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/signing.mk
+include $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/packager.mk
+
+ifeq (Darwin, $(OS_ARCH))
+BINPATH = $(_BINPATH)
+DEFINES += -DAPPNAME=$(_APPNAME)
+else
+BINPATH = bin
+endif
+DEFINES += -DBINPATH=$(BINPATH)
+
+libs::
+ $(MAKE) -C $(DEPTH)/im/locales langpack
+
+ifeq (WINNT,$(OS_ARCH))
+PKGCOMP_FIND_OPTS =
+else
+PKGCOMP_FIND_OPTS = -L
+endif
+ifeq (Darwin, $(OS_ARCH))
+FINDPATH = $(_APPNAME)/Contents/MacOS
+else
+FINDPATH=bin
+endif
+
+package-compare:: $(MOZ_PKG_MANIFEST)
+ifdef MOZ_PKG_MANIFEST_P
+ cd $(DIST); find $(PKGCOMP_FIND_OPTS) $(FINDPATH) -type f | sort > bin-list.txt
+ grep "^$(BINPATH)" $(MOZ_PKG_MANIFEST) | sed -e 's/^\///' | sort > $(DIST)/pack-list.txt
+ -diff -u $(DIST)/pack-list.txt $(DIST)/bin-list.txt
+ rm -f $(DIST)/pack-list.txt $(DIST)/bin-list.txt
+endif
+
+installer:
+ifdef INSTALLER_DIR
+ $(MAKE) -C $(INSTALLER_DIR)
+endif
+
+APP_SOURCE_STAMP = $(firstword $(shell hg -R $(topsrcdir) parent --template="{node|short}\n" 2>/dev/null))
+APP_SOURCE_REPO = $(shell hg -R $(topsrcdir) showconfig paths.default 2>/dev/null | sed -e "s/^ssh:/http:/")
+make-sourcestamp-file::
+ @echo "$(APP_SOURCE_REPO)/rev/$(APP_SOURCE_STAMP)" >> $(MOZ_SOURCESTAMP_FILE)
new file mode 100644
--- /dev/null
+++ b/im/installer/moz.build
@@ -0,0 +1,4 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
new file mode 100644
--- /dev/null
+++ b/im/installer/package-manifest.in
@@ -0,0 +1,656 @@
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0. If a copy of the MPL was not distributed with this
+; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+; Package file for the Instantbird build.
+;
+; Packaging manifest is used to copy files from dist/bin
+; to the staging directory.
+; Some other files are built in the staging directory directly,
+; so they will be implicitly packaged too.
+;
+; File format:
+;
+; [] designates a toplevel component. Example: [xpcom]
+; * wildcard
+; ; file comment
+;
+
+#filter substitution
+
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+#define UNIX_BUT_NOT_MAC
+#endif
+#endif
+
+#ifdef XP_MACOSX
+; Mac bundle stuff
+@APPNAME@/Contents/Info.plist
+@APPNAME@/Contents/PkgInfo
+@APPNAME@/Contents/Resources/
+#endif
+
+[@AB_CD@]
+@BINPATH@/chrome/@AB_CD@@JAREXT@
+@BINPATH@/chrome/@AB_CD@.manifest
+@BINPATH@/@PREF_DIR@/all-l10n.js
+@BINPATH@/searchplugins/*
+@BINPATH@/dictionaries/*
+@BINPATH@/hyphenation/*
+#ifdef XP_WIN32
+@BINPATH@/uninstall/helper.exe
+#endif
+#ifdef MOZ_UPDATER
+@BINPATH@/update.locale
+@BINPATH@/updater.ini
+#endif
+
+[xpcom]
+@BINPATH@/dependentlibs.list
+#ifndef MOZ_NATIVE_NSPR
+@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@plc4@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@plds4@DLL_SUFFIX@
+#endif
+#ifndef MOZ_STATIC_JS
+@BINPATH@/@DLL_PREFIX@mozjs@DLL_SUFFIX@
+#endif
+#ifdef XP_WIN32
+@BINPATH@/@DLL_PREFIX@gkmedias@DLL_SUFFIX@
+#ifndef MOZ_DEBUG
+#if MOZ_MSVC_REDIST == 1400
+@BINPATH@/Microsoft.VC80.CRT.manifest
+@BINPATH@/msvcm80.dll
+@BINPATH@/msvcp80.dll
+@BINPATH@/msvcr80.dll
+#elif MOZ_MSVC_REDIST == 1500
+@BINPATH@/Microsoft.VC90.CRT.manifest
+@BINPATH@/msvcm90.dll
+@BINPATH@/msvcp90.dll
+@BINPATH@/msvcr90.dll
+#elif MOZ_MSVC_REDIST == 1600
+@BINPATH@/msvcp100.dll
+@BINPATH@/msvcr100.dll
+#elif MOZ_MSVC_REDIST == 1700
+@BINPATH@/msvcp110.dll
+@BINPATH@/msvcr110.dll
+#endif
+#endif
+#endif
+@BINPATH@/@DLL_PREFIX@mozalloc@DLL_SUFFIX@
+#ifdef MOZ_SHARED_MOZGLUE
+@BINPATH@/@DLL_PREFIX@mozglue@DLL_SUFFIX@
+#endif
+#ifdef XP_MACOSX
+@BINPATH@/XUL
+#else
+@BINPATH@/@DLL_PREFIX@xul@DLL_SUFFIX@
+#endif
+#ifdef XP_MACOSX
+@BINPATH@/@MOZ_CHILD_PROCESS_NAME@.app/
+@BINPATH@/@DLL_PREFIX@plugin_child_interpose@DLL_SUFFIX@
+#else
+@BINPATH@/@MOZ_CHILD_PROCESS_NAME@
+#endif
+; ANGLE GLES-on-D3D rendering library
+#ifdef MOZ_ANGLE_RENDERER
+@BINPATH@/libEGL.dll
+@BINPATH@/libGLESv2.dll
+@BINPATH@/@MOZ_D3DCOMPILER_DLL@
+#endif
+
+; Modules
+@BINPATH@/modules/*
+
+[instantbird]
+#ifndef XP_UNIX
+@BINPATH@/@MOZ_APP_NAME@.exe
+#else
+@BINPATH@/@MOZ_APP_NAME@-bin
+#ifndef XP_MACOSX
+@BINPATH@/@MOZ_APP_NAME@
+#endif
+#endif
+@BINPATH@/application.ini
+@BINPATH@/platform.ini
+#ifdef XP_OS2
+@BINPATH@/@DLL_PREFIX@mozsqlt3@DLL_SUFFIX@
+#else
+#ifndef MOZ_NATIVE_SQLITE
+@BINPATH@/@DLL_PREFIX@mozsqlite3@DLL_SUFFIX@
+#endif
+#endif
+#ifdef UNIX_BUT_NOT_MAC
+@BINPATH@/run-mozilla.sh
+#ifdef MOZ_UPDATER
+@BINPATH@/icons/*.png
+#endif
+#endif
+
+; [OS/2]
+#ifdef XP_OS2
+@BINPATH@/MozSounds.cmd
+@BINPATH@/*.xqs
+@BINPATH@/components/*.xqs
+#endif
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Instantbird Specific Files
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+@BINPATH@/defaults/profile/localstore.rdf
+@BINPATH@/defaults/profile/prefs.js
+@BINPATH@/defaults/profile/mimeTypes.rdf
+
+#ifdef XP_MACOSX
+@BINPATH@/components/ibDockBadge.js
+@BINPATH@/components/ibDockBadge.manifest
+#else
+@BINPATH@/components/components.manifest
+@BINPATH@/components/@DLL_PREFIX@trayToolkit@DLL_SUFFIX@
+@BINPATH@/components/trayToolkit.xpt
+@BINPATH@/components/profileMigrator.js
+@BINPATH@/components/profileMigrator.manifest
+#endif
+@BINPATH@/components/instantbird.xpt
+@BINPATH@/components/contentHandler.js
+@BINPATH@/components/contentHandler.manifest
+@BINPATH@/components/ibCommandLineHandler.js
+@BINPATH@/components/ibCommandLineHandler.manifest
+@BINPATH@/components/ibConvStatsService.js
+@BINPATH@/components/ibConvStatsService.manifest
+@BINPATH@/components/ibStatusCommandLineHandler.js
+@BINPATH@/components/ibStatusCommandLineHandler.manifest
+@BINPATH@/components/xpcom_base.xpt
+@BINPATH@/components/xpcom_system.xpt
+@BINPATH@/components/xpcom_components.xpt
+@BINPATH@/components/xpcom_ds.xpt
+@BINPATH@/components/xpcom_io.xpt
+@BINPATH@/components/xpcom_threads.xpt
+@BINPATH@/components/xpcom_xpti.xpt
+@BINPATH@/chrome/toolkit@JAREXT@
+@BINPATH@/chrome/toolkit.manifest
+@BINPATH@/chrome/instantbird@JAREXT@
+@BINPATH@/chrome/instantbird.manifest
+#ifndef XP_UNIX
+@BINPATH@/chrome/icons/default/blistWindow.ico
+@BINPATH@/chrome/icons/default/convWindow.ico
+@BINPATH@/chrome/icons/default/default.ico
+#elifdef UNIX_BUT_NOT_MAC
+@BINPATH@/chrome/icons/default/*.png
+#endif
+@BINPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
+@BINPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png
+@BINPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
+@BINPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; chat
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+@BINPATH@/@PREF_DIR@/chat-prefs.js
+@BINPATH@/chrome/chat@JAREXT@
+@BINPATH@/chrome/chat.manifest
+@BINPATH@/components/chat.xpt
+@BINPATH@/components/imAccounts.js
+@BINPATH@/components/imAccounts.manifest
+@BINPATH@/components/imCommands.js
+@BINPATH@/components/imCommands.manifest
+@BINPATH@/components/imContacts.js
+@BINPATH@/components/imContacts.manifest
+@BINPATH@/components/imConversations.js
+@BINPATH@/components/imConversations.manifest
+@BINPATH@/components/imCore.js
+@BINPATH@/components/imCore.manifest
+@BINPATH@/components/facebook.js
+@BINPATH@/components/facebook.manifest
+@BINPATH@/components/gtalk.js
+@BINPATH@/components/gtalk.manifest
+@BINPATH@/components/twitter.js
+@BINPATH@/components/twitter.manifest
+@BINPATH@/components/irc.js
+@BINPATH@/components/irc.manifest
+@BINPATH@/components/xmpp.js
+@BINPATH@/components/xmpp.manifest
+@BINPATH@/components/yahoo.js
+@BINPATH@/components/yahoo.manifest
+@BINPATH@/components/odnoklassniki.js
+@BINPATH@/components/odnoklassniki.manifest
+@BINPATH@/components/smileProtocolHandler.js
+@BINPATH@/components/smileProtocolHandler.manifest
+@BINPATH@/components/logger.js
+@BINPATH@/components/logger.manifest
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Default Profile Settings
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; default pref files
+@BINPATH@/defaults/pref/all-instantbird.js
+@BINPATH@/defaults/pref/channel-prefs.js
+@BINPATH@/greprefs.js
+
+; login manager
+@BINPATH@/components/loginmgr.xpt
+@BINPATH@/components/nsLoginInfo.js
+@BINPATH@/components/nsLoginManager.js
+@BINPATH@/components/nsLoginManagerPrompter.js
+@BINPATH@/components/passwordmgr.manifest
+@BINPATH@/components/storage-mozStorage.js
+@BINPATH@/components/crypto-SDR.js
+
+; download progress
+@BINPATH@/components/nsHelperAppDlg.js
+@BINPATH@/components/nsHelperAppDlg.manifest
+@BINPATH@/components/nsDownloadManagerUI.js
+@BINPATH@/components/nsDownloadManagerUI.manifest
+@BINPATH@/components/downloads.xpt
+
+; Protocol/Content handling
+@BINPATH@/components/nsContentDispatchChooser.js
+@BINPATH@/components/nsContentDispatchChooser.manifest
+@BINPATH@/components/nsHandlerService.js
+@BINPATH@/components/nsHandlerService.manifest
+@BINPATH@/components/nsWebHandlerApp.js
+@BINPATH@/components/nsWebHandlerApp.manifest
+
+; spellchecker (may not be present)
+@BINPATH@/components/spellchecker.xpt
+
+; misson control, autoconfig
+@BINPATH@/defaults/autoconfig/platform.js
+@BINPATH@/defaults/autoconfig/prefcalls.js
+@BINPATH@/components/autoconfig.xpt
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Base Package Files
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; xpconnect
+@BINPATH@/components/xpconnect.xpt
+
+; XP widgets/graphics
+@BINPATH@/components/widget.xpt
+#ifdef XP_MACOSX
+@BINPATH@/components/widget_cocoa.xpt
+#endif
+@BINPATH@/components/gfx.xpt
+
+; layout
+@BINPATH@/components/content_base.xpt
+@BINPATH@/components/content_canvas.xpt
+@BINPATH@/components/content_events.xpt
+@BINPATH@/components/content_html.xpt
+@BINPATH@/components/content_htmldoc.xpt
+@BINPATH@/components/content_xslt.xpt
+@BINPATH@/components/html5.xpt
+@BINPATH@/components/htmlparser.xpt
+@BINPATH@/components/identity.xpt
+@BINPATH@/components/layout_base.xpt
+#ifdef NS_PRINTING
+@BINPATH@/components/layout_printing.xpt
+#endif
+@BINPATH@/components/layout_xul.xpt
+@BINPATH@/components/xulapp.xpt
+@BINPATH@/components/xul.xpt
+@BINPATH@/components/xuldoc.xpt
+@BINPATH@/components/xultmpl.xpt
+
+@BINPATH@/components/inspector.xpt
+
+; Imaging:
+@BINPATH@/components/imgicon.xpt
+@BINPATH@/components/imglib2.xpt
+
+; accessibility (out of process API support)
+#ifdef ACCESSIBILITY
+@BINPATH@/components/accessibility.xpt
+#ifdef XP_WIN32
+@BINPATH@/AccessibleMarshal.dll
+#endif
+#endif
+
+; caps (JavaScript security)
+@BINPATH@/components/caps.xpt
+
+; glue: appshell, docshell, uriloader, chrome, components
+@BINPATH@/components/appshell.xpt
+@BINPATH@/components/appstartup.xpt
+@BINPATH@/components/docshell.xpt
+@BINPATH@/components/uriloader.xpt
+@BINPATH@/components/webBrowser_core.xpt
+@BINPATH@/components/windowwatcher.xpt
+@BINPATH@/components/webbrowserpersist.xpt
+@BINPATH@/components/commandhandler.xpt
+
+; jar
+@BINPATH@/components/jar.xpt
+
+; prefs
+@BINPATH@/components/pref.xpt
+
+; profile
+@BINPATH@/components/profile.xpt
+@BINPATH@/components/toolkitprofile.xpt
+
+; toolkit
+@BINPATH@/components/AppsService.js
+@BINPATH@/components/AppsService.manifest
+@BINPATH@/components/BrowserElementParent.js
+@BINPATH@/components/BrowserElementParent.manifest
+@BINPATH@/components/ColorAnalyzer.js
+@BINPATH@/components/Identity.manifest
+@BINPATH@/components/PageThumbsProtocol.js
+@BINPATH@/components/PermissionSettings.js
+@BINPATH@/components/SettingsManager.js
+@BINPATH@/components/SettingsManager.manifest
+@BINPATH@/components/SiteSpecificUserAgent.js
+@BINPATH@/components/SiteSpecificUserAgent.manifest
+@BINPATH@/components/Webapps.js
+@BINPATH@/components/Webapps.manifest
+@BINPATH@/components/commandlines.xpt
+@BINPATH@/components/chrome.xpt
+@BINPATH@/components/cryptoComponents.manifest
+@BINPATH@/components/Downloads.manifest
+@BINPATH@/components/DownloadLegacy.js
+@BINPATH@/components/nsDefaultCLH.js
+@BINPATH@/components/nsDefaultCLH.manifest
+@BINPATH@/components/nsDOMIdentity.js
+@BINPATH@/components/nsFormAutoComplete.js
+@BINPATH@/components/nsFormHistory.js
+@BINPATH@/components/FormHistoryStartup.js
+@BINPATH@/components/nsIDService.js
+@BINPATH@/components/nsInputListAutoComplete.js
+@BINPATH@/components/nsLivemarkService.js
+@BINPATH@/components/nsPlacesAutoComplete.js
+@BINPATH@/components/nsPlacesAutoComplete.manifest
+@BINPATH@/components/nsPlacesExpiration.js
+@BINPATH@/components/nsPrompter.js
+@BINPATH@/components/nsPrompter.manifest
+@BINPATH@/components/nsSearchService.js
+@BINPATH@/components/nsSearchSuggestions.js
+@BINPATH@/components/nsTaggingService.js
+@BINPATH@/components/PlacesCategoriesStarter.js
+@BINPATH@/components/servicesComponents.manifest
+@BINPATH@/components/TCPSocket.js
+@BINPATH@/components/TCPServerSocket.js
+@BINPATH@/components/TCPSocketParentIntermediary.js
+@BINPATH@/components/TCPSocket.manifest
+#ifdef MOZ_WEBRTC
+@BINPATH@/components/PeerConnection.js
+@BINPATH@/components/PeerConnection.manifest
+#endif
+@BINPATH@/components/TelemetryPing.js
+@BINPATH@/components/TelemetryPing.manifest
+@BINPATH@/components/toolkitplaces.manifest
+@BINPATH@/components/toolkitsearch.manifest
+#ifdef UNIX_BUT_NOT_MAC
+@BINPATH@/components/toolkitremote.xpt
+@BINPATH@/mozilla-xremote-client
+#endif
+#ifdef MOZ_GTK2
+@BINPATH@/components/filepicker.xpt
+@BINPATH@/components/nsFilePicker.js
+@BINPATH@/components/nsFilePicker.manifest
+#endif
+#ifdef MOZ_ENABLE_DBUS
+@BINPATH@/components/@DLL_PREFIX@dbusservice@DLL_SUFFIX@
+#endif
+#ifdef MOZ_ENABLE_PROFILER_SPS
+@BINPATH@/components/profiler.xpt
+#endif
+
+; rdf
+@BINPATH@/components/rdf.xpt
+
+; required i18n libraries
+@BINPATH@/components/intl.xpt
+@BINPATH@/components/locale.xpt
+@BINPATH@/components/uconv.xpt
+@BINPATH@/components/unicharutil.xpt
+
+; dom
+@BINPATH@/components/dom.xpt
+@BINPATH@/components/dom_alarm.xpt
+@BINPATH@/components/dom_apps.xpt
+@BINPATH@/components/dom_base.xpt
+@BINPATH@/components/dom_camera.xpt
+@BINPATH@/components/dom_canvas.xpt
+@BINPATH@/components/dom_core.xpt
+@BINPATH@/components/dom_css.xpt
+@BINPATH@/components/dom_devicestorage.xpt
+@BINPATH@/components/dom_events.xpt
+@BINPATH@/components/dom_file.xpt
+@BINPATH@/components/dom_gamepad.xpt
+@BINPATH@/components/dom_geolocation.xpt
+@BINPATH@/components/dom_html.xpt
+@BINPATH@/components/dom_indexeddb.xpt
+@BINPATH@/components/dom_json.xpt
+@BINPATH@/components/dom_media.xpt
+@BINPATH@/components/dom_mobilemessage.xpt
+@BINPATH@/components/dom_network.xpt
+@BINPATH@/components/dom_notification.xpt
+@BINPATH@/components/dom_offline.xpt
+@BINPATH@/components/dom_permissionsettings.xpt
+@BINPATH@/components/dom_power.xpt
+@BINPATH@/components/dom_quota.xpt
+@BINPATH@/components/dom_range.xpt
+@BINPATH@/components/dom_settings.xpt
+@BINPATH@/components/dom_sidebar.xpt
+@BINPATH@/components/dom_smil.xpt
+@BINPATH@/components/dom_storage.xpt
+@BINPATH@/components/dom_stylesheets.xpt
+@BINPATH@/components/dom_system.xpt
+@BINPATH@/components/dom_traversal.xpt
+@BINPATH@/components/dom_webspeechrecognition.xpt
+@BINPATH@/components/dom_webspeechsynth.xpt
+@BINPATH@/components/dom_xbl.xpt
+@BINPATH@/components/dom_xul.xpt
+@BINPATH@/components/NetworkGeolocationProvider.js
+@BINPATH@/components/NetworkGeolocationProvider.manifest
+
+; editor / composer for HTML compose
+@BINPATH@/components/editor.xpt
+@BINPATH@/components/composer.xpt
+@BINPATH@/components/txmgr.xpt
+
+; find functionality
+@BINPATH@/components/txtsvc.xpt
+
+; moz storage
+@BINPATH@/components/storage.xpt
+
+; netwerk
+@BINPATH@/components/necko.xpt
+@BINPATH@/components/necko_about.xpt
+@BINPATH@/components/necko_dns.xpt
+@BINPATH@/components/necko_http.xpt
+@BINPATH@/components/necko_ipc.xpt
+@BINPATH@/components/necko_res.xpt
+@BINPATH@/components/necko_strconv.xpt
+@BINPATH@/components/necko_file.xpt
+@BINPATH@/components/necko_ftp.xpt
+@BINPATH@/components/necko_cache.xpt
+@BINPATH@/components/necko_cookie.xpt
+@BINPATH@/components/necko_socket.xpt
+@BINPATH@/components/necko_viewsource.xpt
+@BINPATH@/components/necko_websocket.xpt
+#ifdef NECKO_WIFI
+@BINPATH@/components/necko_wifi.xpt
+#endif
+@BINPATH@/components/necko_wyciwyg.xpt
+
+; extensions
+@BINPATH@/components/addonManager.js
+@BINPATH@/components/amContentHandler.js
+@BINPATH@/components/amWebInstallListener.js
+@BINPATH@/components/nsBlocklistService.js
+#ifdef MOZ_UPDATER
+@BINPATH@/components/nsUpdateService.js
+@BINPATH@/components/nsUpdateService.manifest
+@BINPATH@/components/nsUpdateServiceStub.js
+#endif
+@BINPATH@/components/nsUpdateTimerManager.js
+@BINPATH@/components/nsUpdateTimerManager.manifest
+@BINPATH@/components/extensions.xpt
+@BINPATH@/components/extensions.manifest
+@BINPATH@/components/update.xpt
+#ifdef MOZ_WEBSERVICES
+@BINPATH@/components/websrvcs.xpt
+#endif
+@BINPATH@/components/nsURLFormatter.js
+@BINPATH@/components/nsURLFormatter.manifest
+@BINPATH@/components/urlformatter.xpt
+@BINPATH@/components/nsContentPrefService.js
+@BINPATH@/components/nsContentPrefService.manifest
+
+; [Personal Security Manager]
+;
+; NSS libraries are signed in the staging directory,
+; meaning their .chk files are created there directly.
+;
+#ifndef MOZ_NATIVE_NSS
+@BINPATH@/@DLL_PREFIX@freebl3@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@nss3@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@nssckbi@DLL_SUFFIX@
+#ifndef NSS_DISABLE_DBM
+@BINPATH@/@DLL_PREFIX@nssdbm3@DLL_SUFFIX@
+#endif
+@BINPATH@/@DLL_PREFIX@nssutil3@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@smime3@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@softokn3@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@ssl3@DLL_SUFFIX@
+#endif
+@BINPATH@/chrome/pippki@JAREXT@
+@BINPATH@/chrome/pippki.manifest
+@BINPATH@/components/pipboot.xpt
+@BINPATH@/components/pipnss.xpt
+@BINPATH@/components/pippki.xpt
+
+; for Solaris SPARC
+#ifdef SOLARIS
+@BINPATH@/@DLL_PREFIX@freebl_32fpu_3@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@freebl_32int_3@DLL_SUFFIX@
+@BINPATH@/@DLL_PREFIX@freebl_32int64_3@DLL_SUFFIX@
+#endif
+
+; core platform files
+@BINPATH@/components/FeedProcessor.js
+@BINPATH@/components/FeedProcessor.manifest
+@BINPATH@/components/autocomplete.xpt
+@BINPATH@/components/alerts.xpt
+@BINPATH@/components/jsdebugger.xpt
+@BINPATH@/components/jsdservice.xpt
+@BINPATH@/components/jsinspector.xpt
+@BINPATH@/components/fastfind.xpt
+@BINPATH@/components/find.xpt
+@BINPATH@/components/ConsoleAPI.js
+@BINPATH@/components/ConsoleAPI.manifest
+@BINPATH@/components/ContactManager.js
+@BINPATH@/components/ContactManager.manifest
+@BINPATH@/components/contentAreaDropListener.js
+@BINPATH@/components/contentAreaDropListener.manifest
+@BINPATH@/components/contentSecurityPolicy.js
+@BINPATH@/components/contentSecurityPolicy.manifest
+@BINPATH@/components/directory.xpt
+@BINPATH@/components/jsconsole-clhandler.js
+@BINPATH@/components/jsconsole-clhandler.manifest
+@BINPATH@/components/layout_xul_tree.xpt
+@BINPATH@/components/mozfind.xpt
+@BINPATH@/components/mimetype.xpt
+@BINPATH@/components/parentalcontrols.xpt
+#ifdef MOZ_WEBRTC
+@BINPATH@/components/peerconnection.xpt
+#endif
+@BINPATH@/components/exthandler.xpt
+@BINPATH@/components/exthelper.xpt
+@BINPATH@/components/embed_base.xpt
+@BINPATH@/components/windowds.xpt
+@BINPATH@/components/dom_xpath.xpt
+@BINPATH@/components/lwbrk.xpt
+@BINPATH@/components/nsINIProcessor.js
+@BINPATH@/components/nsINIProcessor.manifest
+@BINPATH@/components/pluginGlue.manifest
+@BINPATH@/components/txEXSLTRegExFunctions.js
+@BINPATH@/components/txEXSLTRegExFunctions.manifest
+@BINPATH@/components/feeds.xpt
+@BINPATH@/components/saxparser.xpt
+@BINPATH@/components/satchel.manifest
+@BINPATH@/components/satchel.xpt
+@BINPATH@/components/shistory.xpt
+@BINPATH@/components/telemetry.xpt
+@BINPATH@/components/zipwriter.xpt
+@BINPATH@/components/cookie.xpt
+@BINPATH@/components/places.xpt
+@BINPATH@/components/plugin.xpt
+@BINPATH@/components/prefetch.xpt
+@BINPATH@/res/langGroups.properties
+@BINPATH@/res/language.properties
+@BINPATH@/res/entityTables/*
+@BINPATH@/res/dtd/*
+@BINPATH@/res/fonts/*
+@BINPATH@/res/contenteditable.css
+@BINPATH@/res/designmode.css
+@BINPATH@/res/html/folder.png
+#ifdef XP_MACOSX
+@BINPATH@/res/cursors/
+@BINPATH@/res/MainMenu.nib/
+#endif
+
+; editor resource files
+@BINPATH@/res/EditorOverride.css
+@BINPATH@/res/grabber.gif
+@BINPATH@/res/table-add-column-after-active.gif
+@BINPATH@/res/table-add-column-after-hover.gif
+@BINPATH@/res/table-add-column-after.gif
+@BINPATH@/res/table-add-column-before-active.gif
+@BINPATH@/res/table-add-column-before-hover.gif
+@BINPATH@/res/table-add-column-before.gif
+@BINPATH@/res/table-add-row-after-active.gif
+@BINPATH@/res/table-add-row-after-hover.gif
+@BINPATH@/res/table-add-row-after.gif
+@BINPATH@/res/table-add-row-before-active.gif
+@BINPATH@/res/table-add-row-before-hover.gif
+@BINPATH@/res/table-add-row-before.gif
+@BINPATH@/res/table-remove-column-active.gif
+@BINPATH@/res/table-remove-column-hover.gif
+@BINPATH@/res/table-remove-column.gif
+@BINPATH@/res/table-remove-row-active.gif
+@BINPATH@/res/table-remove-row-hover.gif
+@BINPATH@/res/table-remove-row.gif
+
+; svg
+@BINPATH@/res/svg.css
+@BINPATH@/components/dom_svg.xpt
+
+; [Updater]
+#ifdef MOZ_UPDATER
+#ifdef XP_MACOSX
+@BINPATH@/updater.app/
+#else
+@BINPATH@/updater@BIN_SUFFIX@
+#endif
+#endif
+
+; [Crash Reporter]
+;
+#ifdef MOZ_CRASHREPORTER
+#ifdef XP_MACOSX
+@BINPATH@/crashreporter.app/
+#else
+#ifndef XP_OS2
+@BINPATH@/crashreporter@BIN_SUFFIX@
+@BINPATH@/crashreporter.ini
+#ifdef XP_UNIX
+@BINPATH@/Throbber-small.gif
+#endif
+#endif
+#endif
+#ifdef MOZ_CRASHREPORTER_INJECTOR
+@BINPATH@/breakpadinjector.dll
+#endif
+#endif
+
+; GNOME hooks
+#ifdef MOZ_ENABLE_GNOME_COMPONENT
+@BINPATH@/components/@DLL_PREFIX@mozgnome@DLL_SUFFIX@
+#endif
new file mode 100644
--- /dev/null
+++ b/im/installer/removed-files.in
@@ -0,0 +1,258 @@
+#ifdef XP_UNIX
+#ifndef XP_MACOSX
+#define UNIX_BUT_NOT_MAC
+#endif
+#endif
+# remove old components registration
+components/xpti.dat
+components/compreg.dat
+# .xpt files are linked at package time except on Mac
+components/history.xpt
+#ifdef XP_WIN
+components/accessibility-msaa.xpt
+#endif /* XP_WIN */
+#ifdef XP_MACOSX
+# these 2 files were added after we started linking...
+components/content.xpt
+components/dom_smil.xpt
+#else
+components/accessibility.xpt
+components/alerts.xpt
+components/appshell.xpt
+components/appstartup.xpt
+components/autocomplete.xpt
+components/autoconfig.xpt
+components/binary.manifest
+components/caps.xpt
+components/chardet.xpt
+components/chrome.xpt
+components/commandhandler.xpt
+components/commandlines.xpt
+components/composer.xpt
+components/content_base.xpt
+components/content_html.xpt
+components/content_htmldoc.xpt
+components/content_xmldoc.xpt
+components/content_xslt.xpt
+components/content_xtf.xpt
+components/contentprefs.xpt
+components/cookie.xpt
+components/directory.xpt
+#ifndef XP_WIN
+components/docshell.xpt
+#else /* XP_WIN */
+components/docshell_base.xpt
+#endif /* XP_WIN */
+components/dom.xpt
+components/dom_base.xpt
+components/dom_canvas.xpt
+components/dom_core.xpt
+components/dom_css.xpt
+components/dom_events.xpt
+components/dom_geolocation.xpt
+components/dom_html.xpt
+components/dom_json.xpt
+components/dom_loadsave.xpt
+components/dom_offline.xpt
+components/dom_range.xpt
+components/dom_sidebar.xpt
+components/dom_storage.xpt
+components/dom_stylesheets.xpt
+components/dom_svg.xpt
+components/dom_threads.xpt
+components/dom_traversal.xpt
+components/dom_views.xpt
+components/dom_xbl.xpt
+components/dom_xpath.xpt
+components/dom_xul.xpt
+components/downloads.xpt
+components/editor.xpt
+components/embed_base.xpt
+components/extensions.xpt
+components/exthandler.xpt
+components/exthelper.xpt
+components/fastfind.xpt
+components/feeds.xpt
+#ifndef XP_WIN
+components/filepicker.xpt
+#endif /* ! XP_WIN */
+components/find.xpt
+components/gfx.xpt
+components/htmlparser.xpt
+components/imgicon.xpt
+components/imglib2.xpt
+components/inspector.xpt
+components/intl.xpt
+components/jar.xpt
+components/jsdservice.xpt
+components/layout_base.xpt
+components/layout_printing.xpt
+components/layout_xul.xpt
+components/layout_xul_tree.xpt
+components/locale.xpt
+components/loginmgr.xpt
+components/lwbrk.xpt
+components/mimetype.xpt
+components/mozbrwsr.xpt
+components/mozfind.xpt
+components/necko.xpt
+components/necko_about.xpt
+components/necko_cache.xpt
+components/necko_cookie.xpt
+components/necko_dns.xpt
+components/necko_file.xpt
+components/necko_ftp.xpt
+components/necko_http.xpt
+components/necko_res.xpt
+components/necko_socket.xpt
+components/necko_strconv.xpt
+components/necko_viewsource.xpt
+components/oji.xpt
+components/parentalcontrols.xpt
+components/pipboot.xpt
+components/pipnss.xpt
+components/pippki.xpt
+components/places.xpt
+components/plugin.xpt
+components/pref.xpt
+components/prefetch.xpt
+components/profile.xpt
+#ifndef XP_WIN
+components/proxyObjInst.xpt
+#else /* XP_WIN */
+components/proxyObject.xpt
+#endif /* XP_WIN */
+components/purplexpcom.xpt
+components/rdf.xpt
+components/satchel.xpt
+components/saxparser.xpt
+components/shistory.xpt
+components/spellchecker.xpt
+components/storage.xpt
+components/toolkitprofile.xpt
+#ifndef XP_WIN
+components/toolkitremote.xpt
+#endif /* ! XP_WIN */
+components/toolkitsearch.xpt
+components/txmgr.xpt
+components/txtsvc.xpt
+components/uconv.xpt
+components/unicharutil.xpt
+components/update.xpt
+components/uriloader.xpt
+components/urlformatter.xpt
+components/webBrowser_core.xpt
+components/webbrowserpersist.xpt
+components/webshell_idls.xpt
+components/widget.xpt
+components/windowds.xpt
+components/windowwatcher.xpt
+components/xpcom_base.xpt
+components/xpcom_components.xpt
+components/xpcom_ds.xpt
+components/xpcom_io.xpt
+components/xpcom_system.xpt
+#ifndef XP_WIN
+components/xpcom_threads.xpt
+#else /* XP_WIN */
+components/xpcom_thread.xpt
+#endif /* XP_WIN */
+components/xpcom_xpti.xpt
+components/xpconnect.xpt
+components/xpinstall.xpt
+components/xulapp.xpt
+components/xuldoc.xpt
+components/xultmpl.xpt
+components/zipwriter.xpt
+#endif /* ! XP_MACOSX */
+#ifdef XP_WIN
+components/nsPostUpdateWin.js
+#endif /* XP_WIN */
+components/nsResetPref.js
+d3dx9_43.dll
+#ifdef XP_WIN
+IA2Marshal.dll
+#endif
+#ifdef XP_MACOSX
+libwidget.rsrc
+#endif /* XP_MACOSX */
+modules/JSON.jsm
+res/broken-image.gif
+#ifdef XP_MACOSX
+res/cursors/CVS/Entries
+res/cursors/CVS/Repository
+res/cursors/CVS/Root
+res/cursors/CVS/Tag
+#endif /* XP_MACOSX */
+res/dtd/mathml.dtd
+res/entityTables/mathml20.properties
+res/fonts/mathfont.properties
+res/fonts/mathfontSTIXNonUnicode.properties
+res/fonts/mathfontSTIXSize1.properties
+res/fonts/mathfontStandardSymbolsL.properties
+#ifdef XP_WIN
+res/fonts/mathfontSymbol.properties
+#endif /* XP_WIN */
+res/fonts/mathfontUnicode.properties
+res/mathml.css
+#ifdef XP_WIN
+defaults/profile/US/localstore.rdf
+defaults/profile/US/mimeTypes.rdf
+#endif /* XP_WIN */
+#ifdef UNIX_BUT_NOT_MAC
+chrome/icons/default/default.xpm
+components/libdbusservice.so
+#endif
+# old libpurple. Those files are now statically linked...
+components/@DLL_PREFIX@purpleloader@DLL_SUFFIX@
+libraries/@DLL_PREFIX@purple@DLL_SUFFIX@
+libraries/@DLL_PREFIX@purplexpcom@DLL_SUFFIX@
+#ifndef UNIX_BUT_NOT_MAC
+libraries/@DLL_PREFIX@glib@DLL_SUFFIX@
+libraries/@DLL_PREFIX@xml2@DLL_SUFFIX@
+@DLL_PREFIX@glib@DLL_SUFFIX@
+@DLL_PREFIX@xml2@DLL_SUFFIX@
+#endif /* ! UNIX_BUT_NOT_MAC */
+@DLL_PREFIX@purple@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@gg@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@irc@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@jabber@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@msnp9@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@myspace@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@netsoul@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@novell@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@oscar@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@qq@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@simple@DLL_SUFFIX@
+libraries/prpl/@DLL_PREFIX@yahoo@DLL_SUFFIX@
+protocols/@DLL_PREFIX@gg@DLL_SUFFIX@
+protocols/@DLL_PREFIX@irc@DLL_SUFFIX@
+protocols/@DLL_PREFIX@jabber@DLL_SUFFIX@
+protocols/@DLL_PREFIX@msn@DLL_SUFFIX@
+protocols/@DLL_PREFIX@myspace@DLL_SUFFIX@
+protocols/@DLL_PREFIX@netsoul@DLL_SUFFIX@
+protocols/@DLL_PREFIX@novell@DLL_SUFFIX@
+protocols/@DLL_PREFIX@oscar@DLL_SUFFIX@
+protocols/@DLL_PREFIX@qq@DLL_SUFFIX@
+protocols/@DLL_PREFIX@simple@DLL_SUFFIX@
+protocols/@DLL_PREFIX@yahoo@DLL_SUFFIX@
+components/@DLL_PREFIX@gg@DLL_SUFFIX@
+components/@DLL_PREFIX@irc@DLL_SUFFIX@
+components/@DLL_PREFIX@jabber@DLL_SUFFIX@
+components/@DLL_PREFIX@msn@DLL_SUFFIX@
+components/@DLL_PREFIX@myspace@DLL_SUFFIX@
+components/@DLL_PREFIX@netsoul@DLL_SUFFIX@
+components/@DLL_PREFIX@novell@DLL_SUFFIX@
+components/@DLL_PREFIX@oscar@DLL_SUFFIX@
+components/@DLL_PREFIX@qq@DLL_SUFFIX@
+components/@DLL_PREFIX@simple@DLL_SUFFIX@
+components/@DLL_PREFIX@yahoo@DLL_SUFFIX@
+# bug 469814
+#if XP_MACOSX
+components/libpurplexpcom.dylib.dSYM/Contents/Info.plist
+components/libpurplexpcom.dylib.dSYM/Contents/Resources/DWARF/libpurplexpcom.dylib
+#endif
+# bug 701875
+omni.jar
+@DLL_PREFIX@mozutils@DLL_SUFFIX@
+@DLL_PREFIX@xpcom@DLL_SUFFIX@
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/Makefile.in
@@ -0,0 +1,75 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/package-name.mk
+
+PKG_INST_PATH =
+CONFIG_DIR = instgen
+SFX_MODULE = $(topsrcdir)/other-licenses/7zstub/instantbird/7zSD.sfx
+DEFINES += -DMOZ_APP_VERSION=$(MOZ_APP_VERSION)
+PRE_RELEASE_SUFFIX := $(shell $(PYTHON) $(topsrcdir)/mozilla/config/printprereleasesuffix.py $(MOZ_APP_VERSION))
+DEFINES += -DPRE_RELEASE_SUFFIX="$(PRE_RELEASE_SUFFIX)"
+
+ifdef MOZ_UPDATER
+DEFINES += -DMOZ_UPDATER=1
+endif
+
+INSTALLER_FILES = \
+ app.tag \
+ nsis/installer.nsi \
+ nsis/uninstaller.nsi \
+ nsis/shared.nsh \
+ $(NULL)
+
+BRANDING_FILES = \
+ branding.nsi \
+ wizHeader.bmp \
+ wizHeaderRTL.bmp \
+ wizWatermark.bmp \
+ $(NULL)
+
+DEFINES += \
+ -DAB_CD=$(AB_CD) \
+ -DMOZ_APP_NAME=$(MOZ_APP_NAME) \
+ -DMOZ_APP_DISPLAYNAME=${MOZ_APP_DISPLAYNAME} \
+ -DMOZILLA_VERSION=${MOZILLA_VERSION} \
+ $(NULL)
+
+include $(topsrcdir)/config/config.mk
+
+installer::
+ $(MAKE) -C .. installer-stage
+ $(MAKE) $(CONFIG_DIR)/setup.exe
+
+# For building the uninstaller during the application build so it can be
+# included for mar file generation.
+uninstaller::
+ $(RM) -rf $(CONFIG_DIR) && mkdir $(CONFIG_DIR)
+ $(INSTALL) $(addprefix $(srcdir)/,$(INSTALLER_FILES)) $(CONFIG_DIR)
+ $(INSTALL) $(addprefix $(DIST)/branding/,$(BRANDING_FILES)) $(CONFIG_DIR)
+ $(call py_action,preprocessor,-Fsubstitution $(DEFINES) $(ACDEFINES) \
+ $(srcdir)/nsis/defines.nsi.in -o $(CONFIG_DIR)/defines.nsi)
+ $(PYTHON) $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \
+ --preprocess-locale $(MOZILLA_SRCDIR) \
+ $(call EXPAND_LOCALE_SRCDIR,im/locales)/installer $(AB_CD) $(CONFIG_DIR)
+
+$(CONFIG_DIR)/setup.exe::
+ $(RM) -rf $(CONFIG_DIR) && mkdir $(CONFIG_DIR)
+ $(INSTALL) $(addprefix $(srcdir)/,$(INSTALLER_FILES)) $(CONFIG_DIR)
+ $(INSTALL) $(addprefix $(DIST)/branding/,$(BRANDING_FILES)) $(CONFIG_DIR)
+ $(call py_action,preprocessor,-Fsubstitution $(DEFINES) $(ACDEFINES) \
+ $(srcdir)/nsis/defines.nsi.in -o $(CONFIG_DIR)/defines.nsi)
+ $(PYTHON) $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/windows/nsis/preprocess-locale.py \
+ --preprocess-locale $(MOZILLA_SRCDIR) \
+ $(call EXPAND_LOCALE_SRCDIR,im/locales)/installer $(AB_CD) $(CONFIG_DIR)
+
+include $(topsrcdir)/config/rules.mk
+include $(MOZILLA_SRCDIR)/toolkit/mozapps/installer/windows/nsis/makensis.mk
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/app.tag
@@ -0,0 +1,4 @@
+;!@Install@!UTF-8!
+Title="Instantbird"
+RunProgram="setup.exe"
+;!@InstallEnd@!
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/moz.build
@@ -0,0 +1,4 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/msi/CVS/Entries
@@ -0,0 +1,3 @@
+/thunderbird.mm/1.2/Fri Jan 14 00:06:56 2005//
+/thunderbird.ver/1.1/Sun Jan 9 00:26:25 2005//
+D
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/msi/CVS/Repository
@@ -0,0 +1,1 @@
+mozilla/mail/installer/windows/msi
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/msi/CVS/Root
@@ -0,0 +1,1 @@
+:pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/msi/thunderbird.mm
@@ -0,0 +1,34 @@
+;--- Include MAKEMSI support ------------------------------------------------
+#include "thunderbird.mmh"
+
+<$AbortIf Condition=^not VersionNT OR (VersionNT < 400)^ Message=^Can only be installed on WinNT, Windows 2000, XP or greater.^>
+
+<$DirectoryTree Key="INSTALLDIR" DIR="[ProgramFilesFolder]\Mozilla Thunderbird Installer" CHANGE="\" PrimaryFolder="Y">
+
+<$Feature "F_ThunderbirdMain" Title="Browser" Description="Thunderbird installer files" Attributes="FavorLocal">
+
+ <$Icon KEY="@Thunderbirdicon" "..\branding\thunderbird.ico">
+
+ <$Files "..\install\setup\*.*" SubDir="TREE" DestDir="INSTALLDIR" EXLIST="NotThese">
+ <$Files "..\install\xpi\*.*" SubDir="TREE" DestDir="INSTALLDIR" EXLIST="NotThese">
+
+ #(
+ <$ExeCA
+ EXE="[INSTALLDIR]setup.exe"
+ Args="-ms -nosplash -setDefaultBrowser"
+ Seq="6401" ;; Run this between PublishProduct and InstallFinalize
+ Type="AnyRC"
+ >
+ #)
+<$/Feature>
+
+; fix dialog picture and make it pretty
+<$Table "Control">
+ #(
+ <$Row
+ @Where="Control = 'Bitmap'"
+ @OK="=8"
+ Attributes="1048577"
+ >
+ #)
+<$/Table>
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/msi/thunderbird.ver
@@ -0,0 +1,11 @@
+;----------------------------------------------------------------------------
+; ProductName = Mozilla Thunderbird Installer
+; Description = Mozilla Thunderbird Installer is a delivery vehicle for Mozilla
+; = Thunderbird for easy, large-scale deployment.
+; Installed = WINDOWS_ALL
+; MsiName = thunderbird
+; Guid.UpgradeCode = {06863EB1-787F-462D-89BD-D7A82A276303}
+
+VERSION : 1.0
+DATE : 07 Jan 2005
+CHANGES : Initial version.
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/nsis/CVS/Entries
@@ -0,0 +1,7 @@
+/branding.nsi/1.3/Wed Jul 11 21:40:42 2007//
+/defines.nsi.in/1.3/Fri Sep 28 00:48:32 2007//
+/installer.nsi/1.19/Fri Nov 30 19:02:10 2007//
+/shared.nsh/1.9/Tue Sep 18 02:47:34 2007//
+/uninstaller.nsi/1.9/Fri Sep 28 00:48:32 2007//
+/updater_append.ini/1.1/Mon Jul 30 22:57:46 2007//
+D
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/nsis/CVS/Repository
@@ -0,0 +1,1 @@
+mozilla/mail/installer/windows/nsis
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/nsis/CVS/Root
@@ -0,0 +1,1 @@
+:pserver:anonymous:anonymous@cvs-mirror.mozilla.org:/cvsroot
new file mode 100755
--- /dev/null
+++ b/im/installer/windows/nsis/defines.nsi.in
@@ -0,0 +1,41 @@
+#filter substitution
+
+# These defines should match application.ini settings
+!define AppName "Instantbird"
+!define AppVersion "@MOZ_APP_VERSION@"
+
+!define GREVersion @MOZILLA_VERSION@
+!define AB_CD "@AB_CD@"
+
+!define FileMainEXE "@MOZ_APP_NAME@.exe"
+!define WindowClass "InstantbirdMessageWindow"
+
+!define AppRegName "Instantbird"
+!define ClientsRegName "Instantbird"
+
+!define MinSupportedVer "Microsoft Windows XP SP2"
+
+!define BrandShortName "@MOZ_APP_DISPLAYNAME@"
+!define PreReleaseSuffix "@PRE_RELEASE_SUFFIX@"
+!define BrandFullName "${BrandFullNameInternal}${PreReleaseSuffix}"
+
+!define NO_UNINSTALL_SURVEY
+
+# NO_INSTDIR_FROM_REG is defined for pre-releases which have a PreReleaseSuffix
+# (e.g. Alpha X, Beta X, etc.) to prevent finding a non-default installation
+# directory in the registry and using that as the default. This prevents
+# Beta releases built with official branding from finding an existing install
+# of an official release and defaulting to its installation directory.
+!if "@PRE_RELEASE_SUFFIX@" != ""
+!define NO_INSTDIR_FROM_REG
+!endif
+
+# File details shared by both the installer and uninstaller
+VIProductVersion "1.0.0.0"
+VIAddVersionKey "ProductName" "${BrandShortName}"
+VIAddVersionKey "CompanyName" "${CompanyName}"
+VIAddVersionKey "LegalCopyright" "${CompanyName}"
+VIAddVersionKey "FileVersion" "${AppVersion}"
+VIAddVersionKey "ProductVersion" "${AppVersion}"
+# Comments is not used but left below commented out for future reference
+# VIAddVersionKey "Comments" "Comments"
new file mode 100755
--- /dev/null
+++ b/im/installer/windows/nsis/installer.nsi
@@ -0,0 +1,853 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Required Plugins:
+# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in
+# CityHash http://mxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash
+# ShellLink http://nsis.sourceforge.net/ShellLink_plug-in
+# UAC http://nsis.sourceforge.net/UAC_plug-in
+
+; Set verbosity to 3 (e.g. no script) to lessen the noise in the build logs
+!verbose 3
+
+; 7-Zip provides better compression than the lzma from NSIS so we add the files
+; uncompressed and use 7-Zip to create a SFX archive of it
+SetDatablockOptimize on
+SetCompress off
+CRCCheck on
+
+RequestExecutionLevel user
+
+!addplugindir ./
+
+Var TmpVal
+Var StartMenuDir
+Var InstallType
+Var AddStartMenuSC
+Var AddQuickLaunchSC
+Var AddDesktopSC
+Var PageName
+Var InstallMaintenanceService
+
+; On Vista and above attempt to elevate Standard Users in addition to users that
+; are a member of the Administrators group.
+!define NONADMIN_ELEVATE
+
+; Other included files may depend upon these includes!
+; The following includes are provided by NSIS.
+!include FileFunc.nsh
+!include LogicLib.nsh
+!include MUI.nsh
+!include WinMessages.nsh
+!include WinVer.nsh
+!include WordFunc.nsh
+
+!insertmacro GetOptions
+!insertmacro GetParameters
+!insertmacro GetSize
+!insertmacro StrFilter
+!insertmacro WordReplace
+
+; The following includes are custom.
+!include branding.nsi
+!include defines.nsi
+!include common.nsh
+!include locales.nsi
+
+VIAddVersionKey "FileDescription" "${BrandShortName} Installer"
+VIAddVersionKey "OriginalFilename" "setup.exe"
+
+; Must be inserted before other macros that use logging
+!insertmacro _LoggingCommon
+
+; Most commonly used macros for managing shortcuts
+!insertmacro _LoggingShortcutsCommon
+
+!insertmacro ChangeMUIHeaderImage
+!insertmacro CheckForFilesInUse
+!insertmacro CleanUpdatesDir
+!insertmacro CopyFilesFromDir
+!insertmacro FindSMProgramsDir
+!insertmacro GetPathFromString
+!insertmacro GetParent
+!insertmacro InitHashAppModelId
+!insertmacro ManualCloseAppPrompt
+!insertmacro RegCleanMain
+!insertmacro RegCleanUninstall
+!insertmacro SetBrandNameVars
+!insertmacro UnloadUAC
+!insertmacro WriteRegStr2
+!insertmacro WriteRegDWORD2
+
+!include shared.nsh
+
+; Helper macros for ui callbacks. Insert these after shared.nsh
+!insertmacro CheckCustomCommon
+!insertmacro InstallEndCleanupCommon
+!insertmacro InstallOnInitCommon
+!insertmacro InstallStartCleanupCommon
+!insertmacro LeaveDirectoryCommon
+!insertmacro LeaveOptionsCommon
+!insertmacro OnEndCommon
+!insertmacro PreDirectoryCommon
+
+Name "${BrandFullName}"
+OutFile "setup.exe"
+InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} (${AppVersion})" "InstallLocation"
+InstallDir "$PROGRAMFILES\${BrandFullName}\"
+ShowInstDetails nevershow
+
+################################################################################
+# Modern User Interface - MUI
+
+!define MUI_ABORTWARNING
+!define MUI_ICON setup.ico
+!define MUI_UNICON setup.ico
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_RIGHT
+!define MUI_WELCOMEFINISHPAGE_BITMAP wizWatermark.bmp
+
+; Use a right to left header image when the language is right to left
+!ifdef ${AB_CD}_rtl
+!define MUI_HEADERIMAGE_BITMAP_RTL wizHeaderRTL.bmp
+!else
+!define MUI_HEADERIMAGE_BITMAP wizHeader.bmp
+!endif
+
+/**
+ * Installation Pages
+ */
+; Welcome Page
+!define MUI_PAGE_CUSTOMFUNCTION_PRE preWelcome
+!insertmacro MUI_PAGE_WELCOME
+
+; Custom Options Page
+Page custom preOptions leaveOptions
+
+; Select Install Directory Page
+!define MUI_PAGE_CUSTOMFUNCTION_PRE preDirectory
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE leaveDirectory
+!define MUI_DIRECTORYPAGE_VERIFYONLEAVE
+!insertmacro MUI_PAGE_DIRECTORY
+
+; Custom Shortcuts Page
+Page custom preShortcuts leaveShortcuts
+
+; Start Menu Folder Page Configuration
+!define MUI_PAGE_CUSTOMFUNCTION_PRE preStartMenu
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE leaveStartMenu
+!define MUI_STARTMENUPAGE_NODISABLE
+!insertmacro MUI_PAGE_STARTMENU Application $StartMenuDir
+
+; Custom Summary Page
+Page custom preSummary leaveSummary
+
+; Install Files Page
+!insertmacro MUI_PAGE_INSTFILES
+
+; Finish Page
+!define MUI_FINISHPAGE_TITLE_3LINES
+!define MUI_FINISHPAGE_RUN
+!define MUI_FINISHPAGE_RUN_FUNCTION LaunchApp
+!define MUI_FINISHPAGE_RUN_TEXT $(LAUNCH_TEXT)
+!define MUI_PAGE_CUSTOMFUNCTION_PRE preFinish
+!insertmacro MUI_PAGE_FINISH
+
+; Use the default dialog for IDD_VERIFY for a simple Banner
+ChangeUI IDD_VERIFY "${NSISDIR}\Contrib\UIs\default.exe"
+
+################################################################################
+# Install Sections
+
+; Cleanup operations to perform at the start of the installation.
+Section "-InstallStartCleanup"
+ SetDetailsPrint both
+ DetailPrint $(STATUS_CLEANUP)
+ SetDetailsPrint none
+
+ SetOutPath "$INSTDIR"
+ ${StartInstallLog} "${BrandFullName}" "${AB_CD}" "${AppVersion}" "${GREVersion}"
+
+ ; Delete the app exe to prevent launching the app while we are installing.
+ ClearErrors
+ ${DeleteFile} "$INSTDIR\${FileMainEXE}"
+ ${If} ${Errors}
+ ; If the user closed the application it can take several seconds for it to
+ ; shut down completely. If the application is being used by another user we
+ ; can rename the file and then delete is when the system is restarted.
+ Sleep 5000
+ ${DeleteFile} "$INSTDIR\${FileMainEXE}"
+ ClearErrors
+ ${EndIf}
+
+ ; Remove the updates directory for Vista and above
+ ${CleanUpdatesDir} "Instantbird"
+
+ ${InstallStartCleanupCommon}
+SectionEnd
+
+Section "-Application" APP_IDX
+ ${StartUninstallLog}
+
+ SetDetailsPrint both
+ DetailPrint $(STATUS_INSTALL_APP)
+ SetDetailsPrint none
+
+ ${LogHeader} "Installing Main Files"
+ ${CopyFilesFromDir} "$EXEDIR\core" "$INSTDIR" \
+ "$(ERROR_CREATE_DIRECTORY_PREFIX)" \
+ "$(ERROR_CREATE_DIRECTORY_SUFFIX)"
+
+ ; Register DLLs
+ ; XXXrstrong - AccessibleMarshal.dll can be used by multiple applications but
+ ; is only registered for the last application installed. When the last
+ ; application installed is uninstalled AccessibleMarshal.dll will no longer be
+ ; registered. bug 338878
+ ${LogHeader} "DLL Registration"
+ ClearErrors
+ RegDLL "$INSTDIR\AccessibleMarshal.dll"
+ ${If} ${Errors}
+ ${LogMsg} "** ERROR Registering: $INSTDIR\AccessibleMarshal.dll **"
+ ${Else}
+ ${LogUninstall} "DLLReg: \AccessibleMarshal.dll"
+ ${LogMsg} "Registered: $INSTDIR\AccessibleMarshal.dll"
+ ${EndIf}
+
+ ; Write extra files created by the application to the uninstall log so they
+ ; will be removed when the application is uninstalled. To remove an empty
+ ; directory write a bogus filename to the deepest directory and all empty
+ ; parent directories will be removed.
+ ${LogUninstall} "File: \components\compreg.dat"
+ ${LogUninstall} "File: \components\xpti.dat"
+ ${LogUninstall} "File: \.autoreg"
+ ${LogUninstall} "File: \active-update.xml"
+ ${LogUninstall} "File: \install.log"
+ ${LogUninstall} "File: \install_status.log"
+ ${LogUninstall} "File: \install_wizard.log"
+ ${LogUninstall} "File: \updates.xml"
+
+ ; Default for creating Start Menu folder and shortcuts
+ ; (1 = create, 0 = don't create)
+ ${If} $AddStartMenuSC == ""
+ StrCpy $AddStartMenuSC "1"
+ ${EndIf}
+
+ ; Default for creating Quick Launch shortcut (1 = create, 0 = don't create)
+ ${If} $AddQuickLaunchSC == ""
+ StrCpy $AddQuickLaunchSC "1"
+ ${EndIf}
+
+ ; Default for creating Desktop shortcut (1 = create, 0 = don't create)
+ ${If} $AddDesktopSC == ""
+ StrCpy $AddDesktopSC "1"
+ ${EndIf}
+
+ ${LogHeader} "Adding Registry Entries"
+ SetShellVarContext current ; Set SHCTX to HKCU
+ ${RegCleanMain} "Software\Mozilla"
+ ${RegCleanUninstall}
+
+ ClearErrors
+ WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
+ ${If} ${Errors}
+ StrCpy $TmpVal "HKCU" ; used primarily for logging
+ ${Else}
+ SetShellVarContext all ; Set SHCTX to HKLM
+ DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
+ StrCpy $TmpVal "HKLM" ; used primarily for logging
+ ${RegCleanMain} "Software\Mozilla"
+ ${RegCleanUninstall}
+ ${EndIf}
+
+ ; setup the application model id registration value
+ ${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
+
+ ${RemoveDeprecatedKeys}
+
+ ; The previous installer adds several regsitry values to both HKLM and HKCU.
+ ; We now try to add to HKLM and if that fails to HKCU
+
+ ; The order that reg keys and values are added is important if you use the
+ ; uninstall log to remove them on uninstall. When using the uninstall log you
+ ; MUST add children first so they will be removed first on uninstall so they
+ ; will be empty when the key is deleted. This allows the uninstaller to
+ ; specify that only empty keys will be deleted.
+ ${SetAppKeys}
+
+ ; Uninstall keys can only exist under HKLM on some versions of windows. Since
+ ; it doesn't cause problems always add them.
+ ${SetUninstallKeys}
+
+ ; The following keys should only be set if we can write to HKLM
+ ${If} $TmpVal == "HKLM"
+ ; Set the Start Menu Internet and Vista Registered App HKLM registry keys.
+ ${SetClientsIM}
+
+ ; If we are writing to HKLM and create the quick launch and the desktop
+ ; shortcuts set IconsVisible to 1 otherwise to 0.
+ StrCpy $0 "Software\Clients\IM\${ClientsRegName}\InstallInfo"
+ ${If} $AddQuickLaunchSC == 1
+ ${OrIf} $AddDesktopSC == 1
+ WriteRegDWORD HKLM "$0" "IconsVisible" 1
+ ${Else}
+ WriteRegDWORD HKLM "$0" "IconsVisible" 0
+ ${EndIf}
+ ${EndIf}
+
+ ; These need special handling on uninstall since they may be overwritten by
+ ; an install into a different location.
+ StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\App Paths\${FileMainEXE}"
+ ${WriteRegStr2} $TmpVal "$0" "" "$INSTDIR\${FileMainEXE}" 0
+ ${WriteRegStr2} $TmpVal "$0" "Path" "$INSTDIR" 0
+
+ ; Create shortcuts
+ ${LogHeader} "Adding Shortcuts"
+
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+
+ ; Always add the relative path to the application's Start Menu directory and
+ ; the application's shortcuts to the shortcuts log ini file. The
+ ; DeleteShortcuts macro will do the right thing on uninstall if they don't
+ ; exist.
+ ${LogSMProgramsDirRelPath} "$StartMenuDir"
+ ${LogSMProgramsShortcut} "${BrandFullName}.lnk"
+ ${LogSMProgramsShortcut} "${BrandFullName} ($(SAFE_MODE)).lnk"
+ ${LogQuickLaunchShortcut} "${BrandFullName}.lnk"
+ ${LogDesktopShortcut} "${BrandFullName}.lnk"
+
+ ; UAC only allows elevating to an Admin account so there is no need to add
+ ; the Start Menu or Desktop shortcuts from the original unelevated process
+ ; since this will either add it for the user if unelevated or All Users if
+ ; elevated.
+ ${If} $AddStartMenuSC == 1
+ ${Unless} ${FileExists} "$SMPROGRAMS\$StartMenuDir"
+ CreateDirectory "$SMPROGRAMS\$StartMenuDir"
+ ${LogMsg} "Added Start Menu Directory: $SMPROGRAMS\$StartMenuDir"
+ ${EndUnless}
+ CreateShortCut "$SMPROGRAMS\$StartMenuDir\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0
+ ${If} ${AtLeastWin7}
+ ${AndIf} "$AppUserModelID" != ""
+ ApplicationID::Set "$SMPROGRAMS\$StartMenuDir\${BrandFullName}.lnk" "$AppUserModelID"
+ ${EndIf}
+ ${LogMsg} "Added Shortcut: $SMPROGRAMS\$StartMenuDir\${BrandFullName}.lnk"
+ CreateShortCut "$SMPROGRAMS\$StartMenuDir\${BrandFullName} ($(SAFE_MODE)).lnk" "$INSTDIR\${FileMainEXE}" "-safe-mode" "$INSTDIR\${FileMainEXE}" 0
+ ${If} ${AtLeastWin7}
+ ${AndIf} "$AppUserModelID" != ""
+ ApplicationID::Set "$SMPROGRAMS\$StartMenuDir\${BrandFullName} ($(SAFE_MODE)).lnk" "$AppUserModelID"
+ ${EndIf}
+ ${LogMsg} "Added Shortcut: $SMPROGRAMS\$StartMenuDir\${BrandFullName} ($(SAFE_MODE)).lnk"
+ ${EndIf}
+
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+ ${If} $AddDesktopSC == 1
+ CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0
+ ${If} ${AtLeastWin7}
+ ${AndIf} "$AppUserModelID" != ""
+ ApplicationID::Set "$DESKTOP\${BrandFullName}.lnk" "$AppUserModelID"
+ ${EndIf}
+ ${LogMsg} "Added Shortcut: $DESKTOP\${BrandFullName}.lnk"
+ ${EndIf}
+
+ ; If elevated the Quick Launch shortcut must be added from the unelevated
+ ; original process.
+ ${If} $AddQuickLaunchSC == 1
+ ClearErrors
+ ${GetParameters} $0
+ ${GetOptions} "$0" "/UAC:" $0
+ ${If} ${Errors}
+ Call AddQuickLaunchShortcut
+ ${LogMsg} "Added Shortcut: $QUICKLAUNCH\${BrandFullName}.lnk"
+ ${Else}
+ ; It is not possible to add a log entry from the unelevated process so
+ ; add the log entry without the path since there is no simple way to know
+ ; the correct full path.
+ ${LogMsg} "Added Quick Launch Shortcut: ${BrandFullName}.lnk"
+ GetFunctionAddress $0 AddQuickLaunchShortcut
+ UAC::ExecCodeSegment $0
+ ${EndIf}
+ ${EndIf}
+SectionEnd
+
+; Cleanup operations to perform at the end of the installation.
+Section "-InstallEndCleanup"
+ SetDetailsPrint both
+ DetailPrint "$(STATUS_CLEANUP)"
+ SetDetailsPrint none
+
+ ${Unless} ${Silent}
+ ${MUI_INSTALLOPTIONS_READ} $0 "options.ini" "Field 6" "State"
+ ${If} "$0" == "1"
+ ${LogHeader} "Setting as the default instant messaging"
+ ClearErrors
+ ${GetParameters} $0
+ ${GetOptions} "$0" "/UAC:" $0
+ ${If} ${Errors}
+ Call SetAsDefaultAppUserHKCU
+ ${Else}
+ GetFunctionAddress $0 SetAsDefaultAppUserHKCU
+ UAC::ExecCodeSegment $0
+ ${EndIf}
+ ${EndIf}
+ ${EndUnless}
+
+ ; Refresh desktop icons
+ System::Call "shell32::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)"
+
+ ${InstallEndCleanupCommon}
+
+ ${If} ${RebootFlag}
+ ; When a reboot is required give SHChangeNotify time to finish the
+ ; refreshing the icons so the OS doesn't display the icons from helper.exe
+ Sleep 10000
+ ${LogHeader} "Reboot Required To Finish Installation"
+ ; ${FileMainEXE}.moz-upgrade should never exist but just in case...
+ ${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}.moz-upgrade"
+ Rename "$INSTDIR\${FileMainEXE}" "$INSTDIR\${FileMainEXE}.moz-upgrade"
+ ${EndUnless}
+
+ ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
+ ClearErrors
+ Rename "$INSTDIR\${FileMainEXE}" "$INSTDIR\${FileMainEXE}.moz-delete"
+ ${Unless} ${Errors}
+ Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete"
+ ${EndUnless}
+ ${EndIf}
+
+ ${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}"
+ CopyFiles /SILENT "$INSTDIR\uninstall\helper.exe" "$INSTDIR"
+ FileOpen $0 "$INSTDIR\${FileMainEXE}" w
+ FileWrite $0 "Will be deleted on restart"
+ Rename /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-upgrade" "$INSTDIR\${FileMainEXE}"
+ FileClose $0
+ Delete "$INSTDIR\${FileMainEXE}"
+ Rename "$INSTDIR\helper.exe" "$INSTDIR\${FileMainEXE}"
+ ${EndUnless}
+ ${EndIf}
+SectionEnd
+
+################################################################################
+# Helper Functions
+
+Function AddQuickLaunchShortcut
+ CreateShortCut "$QUICKLAUNCH\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0
+ ${If} ${AtLeastWin7}
+ ${AndIf} "$AppUserModelID" != ""
+ ApplicationID::Set "$QUICKLAUNCH\${BrandFullName}.lnk" "$AppUserModelID"
+ ${EndIf}
+FunctionEnd
+
+Function CheckExistingInstall
+ ; If there is a pending file copy from a previous uninstall don't allow
+ ; installing until after the system has rebooted.
+ IfFileExists "$INSTDIR\${FileMainEXE}.moz-upgrade" +1 +4
+ MessageBox MB_YESNO "$(WARN_RESTART_REQUIRED_UPGRADE)" IDNO +2
+ Reboot
+ Quit
+
+ ; If there is a pending file deletion from a previous uninstall don't allow
+ ; installing until after the system has rebooted.
+ IfFileExists "$INSTDIR\${FileMainEXE}.moz-delete" +1 +4
+ MessageBox MB_YESNO "$(WARN_RESTART_REQUIRED_UNINSTALL)" IDNO +2
+ Reboot
+ Quit
+
+ ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
+ Banner::show /NOUNLOAD "$(BANNER_CHECK_EXISTING)"
+
+ ${If} "$TmpVal" == "FoundMessageWindow"
+ Sleep 5000
+ ${EndIf}
+
+ ${PushFilesToCheck}
+
+ ; Store the return value in $TmpVal so it is less likely to be accidentally
+ ; overwritten elsewhere.
+ ${CheckForFilesInUse} $TmpVal
+
+ Banner::destroy
+
+ ${If} "$TmpVal" == "true"
+ StrCpy $TmpVal "FoundMessageWindow"
+ ${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_INSTALL)"
+ StrCpy $TmpVal "true"
+ ${EndIf}
+ ${EndIf}
+FunctionEnd
+
+Function LaunchApp
+ ClearErrors
+ ${GetParameters} $0
+ ${GetOptions} "$0" "/UAC:" $1
+ ${If} ${Errors}
+ ${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_LAUNCH)"
+ Exec "$INSTDIR\${FileMainEXE}"
+ ${Else}
+ GetFunctionAddress $0 LaunchAppFromElevatedProcess
+ UAC::ExecCodeSegment $0
+ ${EndIf}
+FunctionEnd
+
+Function LaunchAppFromElevatedProcess
+ ${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_LAUNCH)"
+
+ ; Find the installation directory when launching using GetFunctionAddress
+ ; from an elevated installer since $INSTDIR will not be set in this installer
+ ReadRegStr $0 HKLM "Software\Clients\IM\${ClientsRegName}\DefaultIcon" ""
+ ${GetPathFromString} "$0" $0
+ ${GetParent} "$0" $1
+ ; Set our current working directory to the application's install directory
+ ; otherwise the 7-Zip temp directory will be in use and won't be deleted.
+ SetOutPath "$1"
+ Exec "$0"
+FunctionEnd
+
+################################################################################
+# Language
+
+!insertmacro MOZ_MUI_LANGUAGE 'baseLocale'
+!verbose push
+!verbose 3
+!include "overrideLocale.nsh"
+!include "customLocale.nsh"
+!verbose pop
+
+; Set this after the locale files to override it if it is in the locale
+; using " " for BrandingText will hide the "Nullsoft Install System..." branding
+BrandingText " "
+
+################################################################################
+# Page pre, show, and leave functions
+
+Function preWelcome
+ StrCpy $PageName "Welcome"
+ ${If} ${FileExists} "$EXEDIR\core\distribution\modern-wizard.bmp"
+ Delete "$PLUGINSDIR\modern-wizard.bmp"
+ CopyFiles /SILENT "$EXEDIR\core\distribution\modern-wizard.bmp" "$PLUGINSDIR\modern-wizard.bmp"
+ ${EndIf}
+FunctionEnd
+
+Function preOptions
+ StrCpy $PageName "Options"
+ ${If} ${FileExists} "$EXEDIR\core\distribution\modern-header.bmp"
+ ${AndIf} $hHeaderBitmap == ""
+ Delete "$PLUGINSDIR\modern-header.bmp"
+ CopyFiles /SILENT "$EXEDIR\core\distribution\modern-header.bmp" "$PLUGINSDIR\modern-header.bmp"
+ ${ChangeMUIHeaderImage} "$PLUGINSDIR\modern-header.bmp"
+ ${EndIf}
+ !insertmacro MUI_HEADER_TEXT "$(OPTIONS_PAGE_TITLE)" "$(OPTIONS_PAGE_SUBTITLE)"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "options.ini"
+FunctionEnd
+
+Function leaveOptions
+ ${MUI_INSTALLOPTIONS_READ} $0 "options.ini" "Settings" "State"
+ ${If} $0 != 0
+ Abort
+ ${EndIf}
+ ${MUI_INSTALLOPTIONS_READ} $R0 "options.ini" "Field 2" "State"
+ StrCmp $R0 "1" +1 +2
+ StrCpy $InstallType ${INSTALLTYPE_BASIC}
+ ${MUI_INSTALLOPTIONS_READ} $R0 "options.ini" "Field 3" "State"
+ StrCmp $R0 "1" +1 +2
+ StrCpy $InstallType ${INSTALLTYPE_CUSTOM}
+
+ ${LeaveOptionsCommon}
+
+ ${If} $InstallType == ${INSTALLTYPE_BASIC}
+ Call CheckExistingInstall
+ ${EndIf}
+FunctionEnd
+
+Function preDirectory
+ StrCpy $PageName "Directory"
+ ${PreDirectoryCommon}
+FunctionEnd
+
+Function leaveDirectory
+ ${If} $InstallType == ${INSTALLTYPE_BASIC}
+ Call CheckExistingInstall
+ ${EndIf}
+ ${LeaveDirectoryCommon} "$(WARN_DISK_SPACE)" "$(WARN_WRITE_ACCESS)"
+FunctionEnd
+
+Function preShortcuts
+ StrCpy $PageName "Shortcuts"
+ ${CheckCustomCommon}
+ !insertmacro MUI_HEADER_TEXT "$(SHORTCUTS_PAGE_TITLE)" "$(SHORTCUTS_PAGE_SUBTITLE)"
+ !insertmacro MUI_INSTALLOPTIONS_DISPLAY "shortcuts.ini"
+FunctionEnd
+
+Function leaveShortcuts
+ ${MUI_INSTALLOPTIONS_READ} $0 "shortcuts.ini" "Settings" "State"
+ ${If} $0 != 0
+ Abort
+ ${EndIf}
+ ${MUI_INSTALLOPTIONS_READ} $AddDesktopSC "shortcuts.ini" "Field 2" "State"
+ ${MUI_INSTALLOPTIONS_READ} $AddStartMenuSC "shortcuts.ini" "Field 3" "State"
+ ${MUI_INSTALLOPTIONS_READ} $AddQuickLaunchSC "shortcuts.ini" "Field 4" "State"
+
+ ; If Start Menu shortcuts won't be created call CheckExistingInstall here
+ ; since leaveStartMenu will not be called.
+ ${If} $AddStartMenuSC != 1
+ ${AndIf} $InstallType == ${INSTALLTYPE_CUSTOM}
+ Call CheckExistingInstall
+ ${EndIf}
+FunctionEnd
+
+Function preStartMenu
+ StrCpy $PageName "StartMenu"
+ ; With the Unicode installer the path to the application's Start Menu
+ ; directory relative to the Start Menu's Programs directory is written to the
+ ; shortcuts log ini file and is used to set the default Start Menu directory.
+ ${GetSMProgramsDirRelPath} $0
+ ${If} "$0" != ""
+ StrCpy $StartMenuDir "$0"
+ ${Else}
+ ; Prior to the Unicode installer the path to the application's Start Menu
+ ; directory relative to the Start Menu's Programs directory was written to
+ ; the registry and use this value to set the default Start Menu directory.
+ ClearErrors
+ ReadRegStr $0 HKLM "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Main" "Start Menu Folder"
+ ${If} ${Errors}
+ ; Use the FindSMProgramsDir macro to find a previously used path to the
+ ; application's Start Menu directory relative to the Start Menu's Programs
+ ; directory in the uninstall log and use this value to set the default
+ ; Start Menu directory.
+ ${FindSMProgramsDir} $0
+ ${If} "$0" != ""
+ StrCpy $StartMenuDir "$0"
+ ${EndIf}
+ ${Else}
+ StrCpy $StartMenuDir "$0"
+ ${EndUnless}
+ ${EndIf}
+
+ ${CheckCustomCommon}
+ ${If} $AddStartMenuSC != 1
+ Abort
+ ${EndIf}
+FunctionEnd
+
+Function leaveStartMenu
+ ${If} $InstallType == ${INSTALLTYPE_CUSTOM}
+ Call CheckExistingInstall
+ ${EndIf}
+FunctionEnd
+
+Function preSummary
+ StrCpy $PageName "Summary"
+ ; Setup the summary.ini file for the Custom Summary Page
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NumFields "3"
+
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Type "label"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Text "$(SUMMARY_INSTALLED_TO)"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Left "0"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Right "-1"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Top "5"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 1" Bottom "15"
+
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Type "text"
+ ; The contents of this control must be set as follows in the pre function
+ ; ${MUI_INSTALLOPTIONS_READ} $1 "summary.ini" "Field 2" "HWND"
+ ; SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" state ""
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Left "0"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Right "-1"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Top "17"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" Bottom "30"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 2" flags "READONLY"
+
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Type "label"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Left "0"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Right "-1"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Top "130"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Bottom "150"
+
+ ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Text "$(SUMMARY_UPGRADE_CLICK)"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NextButtonText "$(UPGRADE_BUTTON)"
+ ${Else}
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field 3" Text "$(SUMMARY_INSTALL_CLICK)"
+ DeleteINIStr "$PLUGINSDIR\summary.ini" "Settings" NextButtonText
+ ${EndIf}
+
+
+ ; Remove the "Field 4" ini section in case the user hits back and changes the
+ ; installation directory which could change whether the make default checkbox
+ ; should be displayed.
+ DeleteINISec "$PLUGINSDIR\summary.ini" "Field 4"
+
+ ${If} "$TmpVal" == "true"
+ StrCpy $0 "4"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field $0" Top "35"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field $0" Bottom "50"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Settings" NumFields "$0"
+
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field $0" Type "label"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field $0" Text "$(SUMMARY_REBOOT_REQUIRED_INSTALL)"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field $0" Left "0"
+ WriteINIStr "$PLUGINSDIR\summary.ini" "Field $0" Right "-1"
+ ${EndIf}
+
+ !insertmacro MUI_HEADER_TEXT "$(SUMMARY_PAGE_TITLE)" "$(SUMMARY_PAGE_SUBTITLE)"
+
+ ; The Summary custom page has a textbox that will automatically receive
+ ; focus. This sets the focus to the Install button instead.
+ !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "summary.ini"
+ GetDlgItem $0 $HWNDPARENT 1
+ System::Call "user32::SetFocus(i r0, i 0x0007, i,i)i"
+ ${MUI_INSTALLOPTIONS_READ} $1 "summary.ini" "Field 2" "HWND"
+ SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR"
+ !insertmacro MUI_INSTALLOPTIONS_SHOW
+FunctionEnd
+
+Function leaveSummary
+ ; Try to delete the app executable and if we can't delete it try to find the
+ ; app's message window and prompt the user to close the app. This allows
+ ; running an instance that is located in another directory. If for whatever
+ ; reason there is no message window we will just rename the app's files and
+ ; then remove them on restart.
+ ClearErrors
+ ${DeleteFile} "$INSTDIR\${FileMainEXE}"
+ ${If} ${Errors}
+ ${ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_INSTALL)"
+ ${EndIf}
+FunctionEnd
+
+; When we add an optional action to the finish page the cancel button is
+; enabled. This disables it and leaves the finish button as the only choice.
+Function preFinish
+ StrCpy $PageName ""
+ ${EndInstallLog} "${BrandFullName}"
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "cancelenabled" "0"
+FunctionEnd
+
+################################################################################
+# Initialization Functions
+
+Function .onInit
+ StrCpy $PageName ""
+ StrCpy $LANGUAGE 0
+ ${SetBrandNameVars} "$EXEDIR\core\distribution\setup.ini"
+
+ ${InstallOnInitCommon} "$(WARN_MIN_SUPPORTED_OS_MSG)"
+
+ !insertmacro InitInstallOptionsFile "options.ini"
+ !insertmacro InitInstallOptionsFile "shortcuts.ini"
+ !insertmacro InitInstallOptionsFile "summary.ini"
+
+ ; Disable the Make Default IM Client for now...
+ WriteINIStr "$PLUGINSDIR\options.ini" "Settings" NumFields "5"
+
+; ClearErrors
+; ${If} ${AtLeastWinVista}
+; WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
+; ${EndIf}
+; ${If} ${Errors}
+; ; Setup the options.ini file for the Custom Options Page without the option
+; ; to set as default for Vista and above since the installer is unable to
+; ; write to HKLM.
+; WriteINIStr "$PLUGINSDIR\options.ini" "Settings" NumFields "5"
+; ${Else}
+; DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
+; ; Setup the options.ini file for the Custom Options Page with the option
+; ; to set as default
+; WriteINIStr "$PLUGINSDIR\options.ini" "Settings" NumFields "6"
+;
+; WriteINIStr "$PLUGINSDIR\options.ini" "Field 6" Type "checkbox"
+; WriteINIStr "$PLUGINSDIR\options.ini" "Field 6" Text "$(OPTIONS_MAKE_DEFAULT)"
+; WriteINIStr "$PLUGINSDIR\options.ini" "Field 6" Left "0"
+; WriteINIStr "$PLUGINSDIR\options.ini" "Field 6" Right "-1"
+; WriteINIStr "$PLUGINSDIR\options.ini" "Field 6" Top "124"
+; WriteINIStr "$PLUGINSDIR\options.ini" "Field 6" Bottom "145"
+; WriteINIStr "$PLUGINSDIR\options.ini" "Field 6" State "1"
+; ${EndIf}
+
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Type "label"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Text "$(OPTIONS_SUMMARY)"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Left "0"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Right "-1"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Top "0"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 1" Bottom "10"
+
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Type "RadioButton"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Text "$(OPTION_STANDARD_RADIO)"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Left "15"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Right "-1"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Top "25"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Bottom "35"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" State "1"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 2" Flags "GROUP"
+
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Type "RadioButton"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Text "$(OPTION_CUSTOM_RADIO)"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Left "15"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Right "-1"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Top "55"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" Bottom "65"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 3" State "0"
+
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Type "label"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Text "$(OPTION_STANDARD_DESC)"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Left "30"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Right "-1"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Top "37"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 4" Bottom "57"
+
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Type "label"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Text "$(OPTION_CUSTOM_DESC)"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Left "30"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Right "-1"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Top "67"
+ WriteINIStr "$PLUGINSDIR\options.ini" "Field 5" Bottom "87"
+
+ ; Setup the shortcuts.ini file for the Custom Shortcuts Page
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Settings" NumFields "4"
+
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Type "label"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Text "$(CREATE_ICONS_DESC)"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Left "0"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Right "-1"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Top "5"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 1" Bottom "15"
+
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Type "checkbox"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Text "$(ICONS_DESKTOP)"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Left "15"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Right "-1"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Top "20"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Bottom "30"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" State "1"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 2" Flags "GROUP"
+
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Type "checkbox"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Text "$(ICONS_STARTMENU)"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Left "15"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Right "-1"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Top "40"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" Bottom "50"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 3" State "1"
+
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Type "checkbox"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Text "$(ICONS_QUICKLAUNCH)"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Left "15"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Right "-1"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Top "60"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" Bottom "70"
+ WriteINIStr "$PLUGINSDIR\shortcuts.ini" "Field 4" State "1"
+
+ ; There must always be a core directory.
+ ${GetSize} "$EXEDIR\core\" "/S=0K" $R5 $R7 $R8
+ IntOp $R8 $R5 + $R6
+ SectionSetSize ${APP_IDX} $R8
+
+ ; Initialize $hHeaderBitmap to prevent redundant changing of the bitmap if
+ ; the user clicks the back button
+ StrCpy $hHeaderBitmap ""
+FunctionEnd
+
+Function .onGUIEnd
+ ${OnEndCommon}
+FunctionEnd
new file mode 100755
--- /dev/null
+++ b/im/installer/windows/nsis/shared.nsh
@@ -0,0 +1,427 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+!macro PostUpdate
+ ${CreateShortcutsLog}
+
+ ; Remove registry entries for non-existent apps and for apps that point to our
+ ; install location in the Software\Mozilla key and uninstall registry entries
+ ; that point to our install location for both HKCU and HKLM.
+ SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU)
+ ${RegCleanMain} "Software\Mozilla"
+ ${RegCleanUninstall}
+
+ ; setup the application model id registration value
+ ${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
+
+ ClearErrors
+ WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
+ ${If} ${Errors}
+ StrCpy $TmpVal "HKCU" ; used primarily for logging
+ ${Else}
+ SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM)
+ DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
+ StrCpy $TmpVal "HKLM" ; used primarily for logging
+ ${RegCleanMain} "Software\Mozilla"
+ ${RegCleanUninstall}
+
+ ; Only update the Clients\IM registry key values if they don't exist or
+ ; this installation is the same as the one set in those keys.
+ ReadRegStr $0 HKLM "Software\Clients\IM\${ClientsRegName}\DefaultIcon" ""
+ ${GetPathFromString} "$0" $0
+ ${GetParent} "$0" $0
+ ${If} ${FileExists} "$0"
+ ${GetLongPath} "$0" $0
+ ${EndIf}
+ ${If} "$0" == "$INSTDIR"
+ ${SetClientsIM}
+ ${EndIf}
+ ${EndIf}
+
+ ${RemoveDeprecatedKeys}
+
+ ${SetAppKeys}
+ ${SetUninstallKeys}
+
+ ; Remove files that may be left behind by the application in the
+ ; VirtualStore directory.
+ ${CleanVirtualStore}
+
+ ; Remove talkback if it is present (remove after bug 386760 is fixed)
+ ${If} ${FileExists} "$INSTDIR\extensions\talkback@mozilla.org\"
+ RmDir /r "$INSTDIR\extensions\talkback@mozilla.org\"
+ ${EndIf}
+!macroend
+!define PostUpdate "!insertmacro PostUpdate"
+
+!macro SetAsDefaultAppGlobal
+ ${RemoveDeprecatedKeys}
+
+ SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM)
+ ${SetClientsIM}
+ ${ShowShortcuts}
+ WriteRegStr HKLM "Software\Clients\IM" "" "${ClientsRegName}"
+!macroend
+!define SetAsDefaultAppGlobal "!insertmacro SetAsDefaultAppGlobal"
+
+; Removes shortcuts for this installation.
+!macro HideShortcuts
+ StrCpy $R1 "Software\Clients\IM\${ClientsRegName}\InstallInfo"
+ WriteRegDWORD HKLM "$R1" "IconsVisible" 0
+ SetShellVarContext all ; Set $DESKTOP to All Users
+ ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
+ SetShellVarContext current ; Set $DESKTOP to the current user's desktop
+ ${EndUnless}
+
+ ${If} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
+ ShellLink::GetShortCutArgs "$DESKTOP\${BrandFullName}.lnk"
+ Pop $0
+ ${If} "$0" == ""
+ ShellLink::GetShortCutTarget "$DESKTOP\${BrandFullName}.lnk"
+ Pop $0
+ ; Needs to handle short paths
+ ${If} "$0" == "$INSTDIR\${FileMainEXE}"
+ Delete "$DESKTOP\${BrandFullName}.lnk"
+ ${EndIf}
+ ${EndIf}
+ ${EndIf}
+
+ ${If} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk"
+ ShellLink::GetShortCutArgs "$QUICKLAUNCH\${BrandFullName}.lnk"
+ Pop $0
+ ${If} "$0" == ""
+ ShellLink::GetShortCutTarget "$QUICKLAUNCH\${BrandFullName}.lnk"
+ Pop $0
+ ; Needs to handle short paths
+ ${If} "$0" == "$INSTDIR\${FileMainEXE}"
+ Delete "$QUICKLAUNCH\${BrandFullName}.lnk"
+ ${EndIf}
+ ${EndIf}
+ ${EndIf}
+!macroend
+!define HideShortcuts "!insertmacro HideShortcuts"
+
+; Adds shortcuts for this installation.
+!macro ShowShortcuts
+ StrCpy $R1 "Software\Clients\IM\${ClientsRegName}\InstallInfo"
+ WriteRegDWORD HKLM "$R1" "IconsVisible" 1
+ SetShellVarContext all ; Set $DESKTOP to All Users
+ ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
+ CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0
+ ShellLink::SetShortCutWorkingDirectory "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR"
+ ${If} ${AtLeastWin7}
+ ${AndIf} "$AppUserModelID" != ""
+ ApplicationID::Set "$DESKTOP\${BrandFullName}.lnk" "$AppUserModelID"
+ ${EndIf}
+ ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
+ SetShellVarContext current ; Set $DESKTOP to the current user's desktop
+ ${Unless} ${FileExists} "$DESKTOP\${BrandFullName}.lnk"
+ CreateShortCut "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0
+ ShellLink::SetShortCutWorkingDirectory "$DESKTOP\${BrandFullName}.lnk" "$INSTDIR"
+ ${If} ${AtLeastWin7}
+ ${AndIf} "$AppUserModelID" != ""
+ ApplicationID::Set "$DESKTOP\${BrandFullName}.lnk" "$AppUserModelID"
+ ${EndIf}
+ ${EndUnless}
+ ${EndUnless}
+ ${EndUnless}
+ ${Unless} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk"
+ CreateShortCut "$QUICKLAUNCH\${BrandFullName}.lnk" "$INSTDIR\${FileMainEXE}" "" "$INSTDIR\${FileMainEXE}" 0
+ ShellLink::SetShortCutWorkingDirectory "$QUICKLAUNCH\${BrandFullName}.lnk" "$INSTDIR"
+ ${If} ${AtLeastWin7}
+ ${AndIf} "$AppUserModelID" != ""
+ ApplicationID::Set "$QUICKLAUNCH\${BrandFullName}.lnk" "$AppUserModelID"
+ ${EndIf}
+ ${EndUnless}
+!macroend
+!define ShowShortcuts "!insertmacro ShowShortcuts"
+
+
+; Adds the HKLM\Software\Clients\IM\INSTANTBIRD.EXE registry
+; entries (does not use SHCTX).
+;
+; The values for StartMenuInternet are only valid under HKLM and there can only
+; be one installation registerred under StartMenuInternet per application since
+; the key name is derived from the main application executable.
+; http://support.microsoft.com/kb/297878
+;
+; Note: we might be able to get away with using the full path to the
+; application executable for the key name in order to support multiple
+; installations.
+!macro SetClientsIM
+ ${GetLongPath} "$INSTDIR\${FileMainEXE}" $8
+ ${GetLongPath} "$INSTDIR\uninstall\helper.exe" $7
+
+ StrCpy $0 "Software\Clients\IM\${ClientsRegName}"
+
+ WriteRegStr HKLM "$0" "" "${ClientsRegName}"
+ WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0"
+ WriteRegStr HKLM "$0" "DLLPath" "$6"
+ WriteRegStr HKLM "$0\DefaultIcon" "" "$8,0"
+
+ ; The Reinstall Command is defined at
+ ; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_adv/registeringapps.asp
+ WriteRegStr HKLM "$0\InstallInfo" "HideIconsCommand" "$\"$7$\" /HideShortcuts"
+ WriteRegStr HKLM "$0\InstallInfo" "ShowIconsCommand" "$\"$7$\" /ShowShortcuts"
+ WriteRegStr HKLM "$0\InstallInfo" "ReinstallCommand" "$\"$7$\" /SetAsDefaultAppGlobal"
+
+ ClearErrors
+ ReadRegDWORD $1 HKLM "$0\InstallInfo" "IconsVisible"
+ ; If the IconsVisible name value pair doesn't exist add it otherwise the
+ ; application won't be displayed in Set Program Access and Defaults.
+ ${If} ${Errors}
+ ${If} ${FileExists} "$QUICKLAUNCH\${BrandFullName}.lnk"
+ WriteRegDWORD HKLM "$0\InstallInfo" "IconsVisible" 1
+ ${Else}
+ WriteRegDWORD HKLM "$0\InstallInfo" "IconsVisible" 0
+ ${EndIf}
+ ${EndIf}
+
+ WriteRegStr HKLM "$0\shell\open\command" "" "$8"
+
+ ; options
+ WriteRegStr HKLM "$0\shell\properties" "" "$(CONTEXT_OPTIONS)"
+ WriteRegStr HKLM "$0\shell\properties\command" "" "$\"$8$\" -preferences"
+
+ ; safemode
+ WriteRegStr HKLM "$0\shell\safemode" "" "$(CONTEXT_SAFE_MODE)"
+ WriteRegStr HKLM "$0\shell\safemode\command" "" "$\"$8$\" -safe-mode"
+
+ ; Vista Capabilities registry keys
+ WriteRegStr HKLM "$0\Capabilities" "ApplicationDescription" "$(REG_APP_DESC)"
+ WriteRegStr HKLM "$0\Capabilities" "ApplicationIcon" "$8,0"
+ WriteRegStr HKLM "$0\Capabilities" "ApplicationName" "${BrandShortName}"
+
+ ; Vista Registered Application
+ WriteRegStr HKLM "Software\RegisteredApplications" "${AppRegName}" "$0\Capabilities"
+!macroend
+!define SetClientsIM "!insertmacro SetClientsIM"
+
+; Add Software\Mozilla\ registry entries (uses SHCTX).
+!macro SetAppKeys
+ ${GetLongPath} "$INSTDIR" $8
+ StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Main"
+ ${WriteRegStr2} $TmpVal "$0" "Install Directory" "$8" 0
+ ${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0
+
+ StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Uninstall"
+ ${WriteRegStr2} $TmpVal "$0" "Description" "${BrandFullNameInternal} (${AppVersion})" 0
+
+ StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})"
+ ${WriteRegStr2} $TmpVal "$0" "" "${AppVersion} (${AB_CD})" 0
+
+ StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}\bin"
+ ${WriteRegStr2} $TmpVal "$0" "PathToExe" "$8\${FileMainEXE}" 0
+
+ StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}\extensions"
+ ${WriteRegStr2} $TmpVal "$0" "Components" "$8\components" 0
+ ${WriteRegStr2} $TmpVal "$0" "Plugins" "$8\plugins" 0
+
+ StrCpy $0 "Software\Mozilla\${BrandFullNameInternal} ${AppVersion}"
+ ${WriteRegStr2} $TmpVal "$0" "GeckoVer" "${GREVersion}" 0
+
+ StrCpy $0 "Software\Mozilla\${BrandFullNameInternal}"
+ ${WriteRegStr2} $TmpVal "$0" "" "${GREVersion}" 0
+ ${WriteRegStr2} $TmpVal "$0" "CurrentVersion" "${AppVersion} (${AB_CD})" 0
+!macroend
+!define SetAppKeys "!insertmacro SetAppKeys"
+
+; Add uninstall registry entries. This macro tests for write access to determine
+; if the uninstall keys should be added to HKLM or HKCU.
+!macro SetUninstallKeys
+ StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} (${AppVersion})"
+
+ WriteRegStr HKLM "$0" "${BrandShortName}InstallerTest" "Write Test"
+ ${If} ${Errors}
+ StrCpy $1 "HKCU"
+ SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU)
+ ${Else}
+ StrCpy $1 "HKLM"
+ SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM)
+ DeleteRegValue HKLM "$0" "${BrandShortName}InstallerTest"
+ ${EndIf}
+
+ ${GetLongPath} "$INSTDIR" $8
+
+ ; Write the uninstall registry keys
+ ${WriteRegStr2} $1 "$0" "Comments" "${BrandFullNameInternal}" 0
+ ${WriteRegStr2} $1 "$0" "DisplayIcon" "$8\${FileMainEXE},0" 0
+ ${WriteRegStr2} $1 "$0" "DisplayName" "${BrandFullNameInternal} (${AppVersion})" 0
+ ${WriteRegStr2} $1 "$0" "DisplayVersion" "${AppVersion} (${AB_CD})" 0
+ ${WriteRegStr2} $1 "$0" "InstallLocation" "$8" 0
+ ${WriteRegStr2} $1 "$0" "Publisher" "Instantbird" 0
+ ${WriteRegStr2} $1 "$0" "UninstallString" "$8\uninstall\helper.exe" 0
+ ${WriteRegStr2} $1 "$0" "URLInfoAbout" "${URLInfoAbout}" 0
+ ${WriteRegStr2} $1 "$0" "URLUpdateInfo" "${URLUpdateInfo}" 0
+ ${WriteRegDWORD2} $1 "$0" "NoModify" 1 0
+ ${WriteRegDWORD2} $1 "$0" "NoRepair" 1 0
+
+ ${If} "$TmpVal" == "HKLM"
+ SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM)
+ ${Else}
+ SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU)
+ ${EndIf}
+!macroend
+!define SetUninstallKeys "!insertmacro SetUninstallKeys"
+
+; Removes various registry entries for reasons noted below (does not use SHCTX).
+!macro RemoveDeprecatedKeys
+ ; Remove the app compatibility registry key
+ StrCpy $0 "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
+ DeleteRegValue HKLM "$0" "$INSTDIR\${FileMainEXE}"
+ DeleteRegValue HKCU "$0" "$INSTDIR\${FileMainEXE}"
+
+!macroend
+!define RemoveDeprecatedKeys "!insertmacro RemoveDeprecatedKeys"
+
+; Creates the shortcuts log ini file with the appropriate entries if it doesn't
+; already exist.
+!macro CreateShortcutsLog
+ ${GetShortcutsLogPath} $0
+ ${Unless} ${FileExists} "$0"
+ ; Default to ${BrandFullName} for the Start Menu Folder
+ StrCpy $TmpVal "${BrandFullName}"
+ ; Prior to Unicode installer the Start Menu directory was written to the
+ ; registry and this value can be used to set the Start Menu directory.
+ ClearErrors
+ ReadRegStr $0 SHCTX "Software\Mozilla\${BrandFullNameInternal}\${AppVersion} (${AB_CD})\Main" "Start Menu Folder"
+ ${If} ${Errors}
+ ${FindSMProgramsDir} $0
+ ${If} "$0" != ""
+ StrCpy $TmpVal "$0"
+ ${EndIf}
+ ${Else}
+ StrCpy $TmpVal "$0"
+ ${EndUnless}
+
+ ${LogSMProgramsDirRelPath} "$TmpVal"
+ ${LogSMProgramsShortcut} "${BrandFullName}.lnk"
+ ${LogSMProgramsShortcut} "${BrandFullName} ($(SAFE_MODE)).lnk"
+ ${LogQuickLaunchShortcut} "${BrandFullName}.lnk"
+ ${LogDesktopShortcut} "${BrandFullName}.lnk"
+ ${EndUnless}
+!macroend
+!define CreateShortcutsLog "!insertmacro CreateShortcutsLog"
+
+; The files to check if they are in use during (un)install so the restart is
+; required message is displayed. All files must be located in the $INSTDIR
+; directory.
+!macro PushFilesToCheck
+ ; The first string to be pushed onto the stack MUST be "end" to indicate
+ ; that there are no more files to check in $INSTDIR and the last string
+ ; should be ${FileMainEXE} so if it is in use the CheckForFilesInUse macro
+ ; returns after the first check.
+ Push "end"
+ Push "AccessibleMarshal.dll"
+ Push "freebl3.dll"
+ Push "nssckbi.dll"
+ Push "nspr4.dll"
+ Push "nssdbm3.dll"
+ Push "sqlite3.dll"
+ Push "xpcom.dll"
+ Push "crashreporter.exe"
+ Push "updater.exe"
+ Push "xpicleanup.exe"
+ Push "${FileMainEXE}"
+!macroend
+!define PushFilesToCheck "!insertmacro PushFilesToCheck"
+
+
+; Sets this installation as the default IM app by setting the registry keys
+; under HKEY_CURRENT_USER via registry calls and using the AppAssocReg NSIS
+; plugin for Vista and above. This is a function instead of a macro so it is
+; easily called from an elevated instance of the binary. Since this can be
+; called by an elevated instance logging is not performed in this function.
+Function SetAsDefaultAppUserHKCU
+ ; Only set as the user's IM app if the IM
+ ; registry keys are for this install.
+ ${StrFilter} "${FileMainEXE}" "+" "" "" $R9
+ ClearErrors
+ ReadRegStr $0 HKLM "Software\Clients\IM\$R9\DefaultIcon" ""
+ ${Unless} ${Errors}
+ ${GetPathFromString} "$0" $0
+ ${GetParent} "$0" $0
+ ${If} ${FileExists} "$0"
+ ${GetLongPath} "$0" $0
+ ${If} "$0" == "$INSTDIR"
+ WriteRegStr HKCU "Software\Clients\IM" "" "$R9"
+ ${EndIf}
+ ${EndIf}
+ ${EndUnless}
+
+ SetShellVarContext current ; Set SHCTX to the current user (e.g. HKCU)
+
+ ${If} ${AtLeastWinVista}
+ ; Only register as the handler on Vista and above if the app registry name
+ ; exists under the RegisteredApplications registry key. The protocol and
+ ; file handlers set previously at the user level will associate this install
+ ; as the default browser.
+ ClearErrors
+ ReadRegStr $0 HKLM "Software\RegisteredApplications" "${AppRegName}"
+ ${Unless} ${Errors}
+ AppAssocReg::SetAppAsDefaultAll "${AppRegName}"
+ ${EndUnless}
+ ${EndIf}
+ ${RemoveDeprecatedKeys}
+FunctionEnd
+
+; The !ifdef NO_LOG prevents warnings when compiling the installer.nsi due to
+; this function only being used by the uninstaller.nsi.
+!ifdef NO_LOG
+
+Function SetAsDefaultAppUser
+ ; It is only possible to set this installation of the application as the
+ ; StartMenuInternet handler if it was added to the HKLM StartMenuInternet
+ ; registry keys.
+ ; http://support.microsoft.com/kb/297878
+
+ ; Check if this install location registered as the StartMenuInternet client
+ ${StrFilter} "${FileMainEXE}" "+" "" "" $R9
+ ClearErrors
+ ReadRegStr $0 HKLM "Software\Clients\IM\$R9\DefaultIcon" ""
+ ${Unless} ${Errors}
+ ${GetPathFromString} "$0" $0
+ ${GetParent} "$0" $0
+ ${If} ${FileExists} "$0"
+ ${GetLongPath} "$0" $0
+ ${If} "$0" == "$INSTDIR"
+ ; Check if this is running in an elevated process
+ ClearErrors
+ ${GetParameters} $0
+ ${GetOptions} "$0" "/UAC:" $0
+ ${If} ${Errors} ; Not elevated
+ Call SetAsDefaultAppUserHKCU
+ ${Else} ; Elevated - execute the function in the unelevated process
+ GetFunctionAddress $0 SetAsDefaultAppUserHKCU
+ UAC::ExecCodeSegment $0
+ ${EndIf}
+ Return ; Nothing more needs to be done
+ ${EndIf}
+ ${EndIf}
+ ${EndUnless}
+
+ ; The code after ElevateUAC won't be executed on Vista and above when the
+ ; user:
+ ; a) is a member of the administrators group (e.g. elevation is required)
+ ; b) is not a member of the administrators group and chooses to elevate
+ ${ElevateUAC}
+
+ ${SetClientsIM}
+
+ SetShellVarContext all ; Set SHCTX to all users (e.g. HKLM)
+ ${RemoveDeprecatedKeys}
+
+ ClearErrors
+ ${GetParameters} $0
+ ${GetOptions} "$0" "/UAC:" $0
+ ${If} ${Errors}
+ Call SetAsDefaultAppUserHKCU
+ ${Else}
+ GetFunctionAddress $0 SetAsDefaultAppUserHKCU
+ UAC::ExecCodeSegment $0
+ ${EndIf}
+FunctionEnd
+!define SetAsDefaultAppUser "Call SetAsDefaultAppUser"
+
+!endif
new file mode 100755
--- /dev/null
+++ b/im/installer/windows/nsis/uninstaller.nsi
@@ -0,0 +1,533 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Required Plugins:
+# AppAssocReg http://nsis.sourceforge.net/Application_Association_Registration_plug-in
+# CityHash http://mxr.mozilla.org/mozilla-central/source/other-licenses/nsis/Contrib/CityHash
+# ShellLink http://nsis.sourceforge.net/ShellLink_plug-in
+# UAC http://nsis.sourceforge.net/UAC_plug-in
+
+; Set verbosity to 3 (e.g. no script) to lessen the noise in the build logs
+!verbose 3
+
+; 7-Zip provides better compression than the lzma from NSIS so we add the files
+; uncompressed and use 7-Zip to create a SFX archive of it
+SetDatablockOptimize on
+SetCompress off
+CRCCheck on
+
+RequestExecutionLevel user
+
+!addplugindir ./
+
+; On Vista and above attempt to elevate Standard Users in addition to users that
+; are a member of the Administrators group.
+!define NONADMIN_ELEVATE
+
+; prevents compiling of the reg write logging.
+!define NO_LOG
+
+Var TmpVal
+
+; Other included files may depend upon these includes!
+; The following includes are provided by NSIS.
+!include FileFunc.nsh
+!include LogicLib.nsh
+!include MUI.nsh
+!include WinMessages.nsh
+!include WinVer.nsh
+!include WordFunc.nsh
+
+!insertmacro StrFilter
+!insertmacro WordReplace
+
+!insertmacro un.GetParent
+
+; The following includes are custom.
+!include branding.nsi
+!include defines.nsi
+!include common.nsh
+!include locales.nsi
+
+; This is named BrandShortName helper because we use this for software update
+; post update cleanup.
+VIAddVersionKey "FileDescription" "${BrandShortName} Helper"
+VIAddVersionKey "OriginalFilename" "helper.exe"
+
+; Most commonly used macros for managing shortcuts
+!insertmacro _LoggingShortcutsCommon
+
+!insertmacro CleanVirtualStore
+!insertmacro ElevateUAC
+!insertmacro FindSMProgramsDir
+!insertmacro GetLongPath
+!insertmacro GetPathFromString
+!insertmacro InitHashAppModelId
+!insertmacro RegCleanMain
+!insertmacro RegCleanUninstall
+!insertmacro SetBrandNameVars
+!insertmacro UnloadUAC
+!insertmacro UpdateShortcutAppModelIDs
+!insertmacro WriteRegDWORD2
+!insertmacro WriteRegStr2
+
+!insertmacro un.ChangeMUIHeaderImage
+!insertmacro un.CheckForFilesInUse
+!insertmacro un.CleanUpdatesDir
+!insertmacro un.CleanVirtualStore
+!insertmacro un.DeleteRelativeProfiles
+!insertmacro un.DeleteShortcuts
+!insertmacro un.GetLongPath
+!insertmacro un.GetSecondInstallPath
+!insertmacro un.InitHashAppModelId
+!insertmacro un.ManualCloseAppPrompt
+!insertmacro un.ParseUninstallLog
+!insertmacro un.RegCleanMain
+!insertmacro un.RegCleanUninstall
+!insertmacro un.RemoveQuotesFromPath
+!insertmacro un.SetBrandNameVars
+
+!include shared.nsh
+
+; Helper macros for ui callbacks. Insert these after shared.nsh
+!insertmacro OnEndCommon
+!insertmacro UninstallOnInitCommon
+
+!insertmacro un.OnEndCommon
+
+Name "${BrandFullName}"
+OutFile "helper.exe"
+InstallDirRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${BrandFullNameInternal} (${AppVersion})" "InstallLocation"
+InstallDir "$PROGRAMFILES\${BrandFullName}"
+ShowUnInstDetails nevershow
+
+################################################################################
+# Modern User Interface - MUI
+
+!define MUI_ABORTWARNING
+!define MUI_ICON setup.ico
+!define MUI_UNICON setup.ico
+!define MUI_WELCOMEPAGE_TITLE_3LINES
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_RIGHT
+!define MUI_UNWELCOMEFINISHPAGE_BITMAP wizWatermark.bmp
+
+; Use a right to left header image when the language is right to left
+!ifdef ${AB_CD}_rtl
+!define MUI_HEADERIMAGE_BITMAP_RTL wizHeaderRTL.bmp
+!else
+!define MUI_HEADERIMAGE_BITMAP wizHeader.bmp
+!endif
+
+/**
+ * Uninstall Pages
+ */
+; Welcome Page
+!define MUI_PAGE_CUSTOMFUNCTION_PRE un.preWelcome
+!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.leaveWelcome
+!insertmacro MUI_UNPAGE_WELCOME
+
+; Custom Uninstall Confirm Page
+UninstPage custom un.preConfirm un.leaveConfirm
+
+; Remove Files Page
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Finish Page
+
+; Don't setup the survey controls, functions, etc. when the application has
+; defined NO_UNINSTALL_SURVEY
+!ifndef NO_UNINSTALL_SURVEY
+!define MUI_PAGE_CUSTOMFUNCTION_PRE un.preFinish
+!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
+!define MUI_FINISHPAGE_SHOWREADME ""
+!define MUI_FINISHPAGE_SHOWREADME_TEXT $(SURVEY_TEXT)
+!define MUI_FINISHPAGE_SHOWREADME_FUNCTION un.Survey
+!endif
+
+!insertmacro MUI_UNPAGE_FINISH
+
+; Use the default dialog for IDD_VERIFY for a simple Banner
+ChangeUI IDD_VERIFY "${NSISDIR}\Contrib\UIs\default.exe"
+
+################################################################################
+# Install Sections
+; Empty section required for the installer to compile as an uninstaller
+Section ""
+SectionEnd
+
+################################################################################
+# Uninstall Sections
+
+Section "Uninstall"
+ SetDetailsPrint textonly
+ DetailPrint $(STATUS_UNINSTALL_MAIN)
+ SetDetailsPrint none
+
+ ; Delete the app exe to prevent launching the app while we are uninstalling.
+ ClearErrors
+ ${DeleteFile} "$INSTDIR\${FileMainEXE}"
+ ${If} ${Errors}
+ ; If the user closed the application it can take several seconds for it to
+ ; shut down completely. If the application is being used by another user we
+ ; can still delete the files when the system is restarted.
+ Sleep 5000
+ ${DeleteFile} "$INSTDIR\${FileMainEXE}"
+ ClearErrors
+ ${EndIf}
+
+ ; setup the application model id registration value
+ ${un.InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
+
+ ${MUI_INSTALLOPTIONS_READ} $0 "unconfirm.ini" "Field 3" "State"
+ ${If} "$0" == "1"
+ ${un.DeleteRelativeProfiles} "Instantbird"
+ ${EndIf}
+
+ SetShellVarContext current ; Set SHCTX to HKCU
+ ${un.RegCleanMain} "Software\Mozilla"
+ ${un.RegCleanUninstall}
+ ${un.DeleteShortcuts}
+
+ ClearErrors
+ WriteRegStr HKLM "Software\Mozilla" "${BrandShortName}InstallerTest" "Write Test"
+ ${If} ${Errors}
+ StrCpy $TmpVal "HKCU" ; used primarily for logging
+ ${Else}
+ SetShellVarContext all ; Set SHCTX to HKLM
+ DeleteRegValue HKLM "Software\Mozilla" "${BrandShortName}InstallerTest"
+ StrCpy $TmpVal "HKLM" ; used primarily for logging
+ ${un.RegCleanMain} "Software\Mozilla"
+ ${un.RegCleanUninstall}
+ ${un.DeleteShortcuts}
+ ${EndIf}
+
+ ; Unregister resources associated with Win7 taskbar jump lists.
+ ${If} "$AppUserModelID" != ""
+ ${AndIf} ${AtLeastWin7}
+ ApplicationID::UninstallJumpLists "$AppUserModelID"
+ ${EndIf}
+
+ ; Remove any app model id's stored in the registry for this install path
+ DeleteRegValue HKCU "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR"
+ DeleteRegValue HKLM "Software\Mozilla\${AppName}\TaskBarIDs" "$INSTDIR"
+
+ ClearErrors
+
+ SetShellVarContext all ; Set SHCTX to HKLM
+ ${un.GetSecondInstallPath} "Software\Mozilla" $R9
+ ${If} $R9 == "false"
+ SetShellVarContext current ; Set SHCTX to HKCU
+ ${un.GetSecondInstallPath} "Software\Mozilla" $R9
+ ${EndIf}
+
+ StrCpy $0 "Software\Clients\IM\${ClientsRegName}\shell\open\command"
+ ReadRegStr $R1 HKLM "$0" ""
+ ${un.RemoveQuotesFromPath} "$R1" $R1
+ ${un.GetParent} "$R1" $R1
+
+ ; Only remove the IM key if it refers to this install location.
+ ; The IM registry key is independent of the default IM app
+ ; settings. The XPInstall base un-installer always removes this key if it is
+ ; uninstalling the default browser and it will always replace the keys when
+ ; installing even if there is another install of Instantbird that is set as the
+ ; default IM app. Now the key is always updated on install but it is only
+ ; removed if it refers to this install location.
+ ${If} "$INSTDIR" == "$R1"
+ DeleteRegKey HKLM "Software\Clients\IM\${ClientsRegName}"
+ DeleteRegValue HKLM "Software\RegisteredApplications" "${AppRegName}"
+ ${EndIf}
+
+ StrCpy $0 "Software\Microsoft\Windows\CurrentVersion\App Paths\${FileMainEXE}"
+ ${If} $R9 == "false"
+ DeleteRegKey HKLM "$0"
+ DeleteRegKey HKCU "$0"
+ ${Else}
+ ReadRegStr $R1 HKLM "$0" ""
+ ${un.RemoveQuotesFromPath} "$R1" $R1
+ ${un.GetParent} "$R1" $R1
+ ${If} "$INSTDIR" == "$R1"
+ WriteRegStr HKLM "$0" "" "$R9"
+ ${un.GetParent} "$R9" $R1
+ WriteRegStr HKLM "$0" "Path" "$R1"
+ ${EndIf}
+ ${EndIf}
+
+ ; Remove directories and files we always control before parsing the uninstall
+ ; log so empty directories can be removed.
+ ${If} ${FileExists} "$INSTDIR\updates"
+ RmDir /r /REBOOTOK "$INSTDIR\updates"
+ ${EndIf}
+ ${If} ${FileExists} "$INSTDIR\defaults\shortcuts"
+ RmDir /r /REBOOTOK "$INSTDIR\defaults\shortcuts"
+ ${EndIf}
+ ${If} ${FileExists} "$INSTDIR\distribution"
+ RmDir /r /REBOOTOK "$INSTDIR\distribution"
+ ${EndIf}
+ ${If} ${FileExists} "$INSTDIR\removed-files"
+ Delete /REBOOTOK "$INSTDIR\removed-files"
+ ${EndIf}
+
+ ; Remove the updates directory for Vista and above
+ ${un.CleanUpdatesDir} "Instantbird"
+
+ ; Remove files that may be left behind by the application in the
+ ; VirtualStore directory.
+ ${un.CleanVirtualStore}
+
+ ; Parse the uninstall log to unregister dll's and remove all installed
+ ; files / directories this install is responsible for.
+ ${un.ParseUninstallLog}
+
+ ; Remove the uninstall directory that we control
+ RmDir /r /REBOOTOK "$INSTDIR\uninstall"
+
+ ; Remove the installation directory if it is empty
+ ${RemoveDir} "$INSTDIR"
+
+ ; If instantbird.exe was successfully deleted yet we still need to restart to
+ ; remove other files create a dummy instantbird.exe.moz-delete to prevent the
+ ; installer from allowing an install without restart when it is required
+ ; to complete an uninstall.
+ ${If} ${RebootFlag}
+ ${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}.moz-delete"
+ FileOpen $0 "$INSTDIR\${FileMainEXE}.moz-delete" w
+ FileWrite $0 "Will be deleted on restart"
+ Delete /REBOOTOK "$INSTDIR\${FileMainEXE}.moz-delete"
+ FileClose $0
+ ${EndUnless}
+ ${EndIf}
+
+ ; Refresh desktop icons otherwise the start menu internet item won't be
+ ; removed and other ugly things will happen like recreation of the app's
+ ; clients registry key by the OS under some conditions.
+ System::Call "shell32::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)"
+SectionEnd
+
+################################################################################
+# Helper Functions
+
+; Don't setup the survey controls, functions, etc. when the application has
+; defined NO_UNINSTALL_SURVEY
+!ifndef NO_UNINSTALL_SURVEY
+Function un.Survey
+ Exec "$\"$TmpVal$\" $\"${SurveyURL}$\""
+FunctionEnd
+!endif
+
+################################################################################
+# Language
+
+!insertmacro MOZ_MUI_LANGUAGE 'baseLocale'
+!verbose push
+!verbose 3
+!include "overrideLocale.nsh"
+!include "customLocale.nsh"
+!verbose pop
+
+; Set this after the locale files to override it if it is in the locale. Using
+; " " for BrandingText will hide the "Nullsoft Install System..." branding.
+BrandingText " "
+
+################################################################################
+# Page pre, show, and leave functions
+
+Function un.preWelcome
+ ${If} ${FileExists} "$INSTDIR\distribution\modern-wizard.bmp"
+ Delete "$PLUGINSDIR\modern-wizard.bmp"
+ CopyFiles /SILENT "$INSTDIR\distribution\modern-wizard.bmp" "$PLUGINSDIR\modern-wizard.bmp"
+ ${EndIf}
+FunctionEnd
+
+Function un.leaveWelcome
+ ${If} ${FileExists} "$INSTDIR\${FileMainEXE}"
+ Banner::show /NOUNLOAD "$(BANNER_CHECK_EXISTING)"
+
+ ; If the message window has been found previously give the app an additional
+ ; five seconds to close.
+ ${If} "$TmpVal" == "FoundMessageWindow"
+ Sleep 5000
+ ${EndIf}
+
+ ${PushFilesToCheck}
+
+ ${un.CheckForFilesInUse} $TmpVal
+
+ Banner::destroy
+
+ ; If there are files in use $TmpVal will be "true"
+ ${If} "$TmpVal" == "true"
+ ; If the message window is found the call to ManualCloseAppPrompt will
+ ; abort leaving the value of $TmpVal set to "FoundMessageWindow".
+ StrCpy $TmpVal "FoundMessageWindow"
+ ${un.ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_UNINSTALL)"
+ ; If the message window is not found set $TmpVal to "true" so the restart
+ ; required message is displayed.
+ StrCpy $TmpVal "true"
+ ${EndIf}
+ ${EndIf}
+FunctionEnd
+
+Function un.preConfirm
+ ${If} ${FileExists} "$INSTDIR\distribution\modern-header.bmp"
+ ${AndIf} $hHeaderBitmap == ""
+ Delete "$PLUGINSDIR\modern-header.bmp"
+ CopyFiles /SILENT "$INSTDIR\distribution\modern-header.bmp" "$PLUGINSDIR\modern-header.bmp"
+ ${un.ChangeMUIHeaderImage} "$PLUGINSDIR\modern-header.bmp"
+ ${EndIf}
+
+ ; Setup the unconfirm.ini file for the Custom Uninstall Confirm Page
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "5"
+
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Type "label"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Text "$(UN_CONFIRM_UNINSTALLED_FROM)"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Left "0"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Right "-1"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Top "5"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 1" Bottom "15"
+
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Type "text"
+ ; The contents of this control must be set as follows in the pre function
+ ; ${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 2" "HWND"
+ ; SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" State ""
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Left "0"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Right "-1"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Top "17"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" Bottom "30"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 2" flags "READONLY"
+
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Type "checkbox"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Text "$(UN_REMOVE_PROFILES)"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Left "0"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Right "-1"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "40"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "50"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" State "0"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" flags "NOTIFY"
+
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Type "text"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" State "$(UN_REMOVE_PROFILES_DESC)"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Left "0"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Right "-1"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Top "52"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Bottom "120"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" flags "MULTILINE|READONLY"
+
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Type "label"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Text "$(UN_CONFIRM_CLICK)"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Left "0"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Right "-1"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Top "130"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 5" Bottom "150"
+
+ ${If} "$TmpVal" == "true"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Type "label"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Text "$(SUMMARY_REBOOT_REQUIRED_UNINSTALL)"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Left "0"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Right "-1"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Top "35"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 6" Bottom "45"
+
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Settings" NumFields "6"
+
+ ; To insert this control reset Top / Bottom for controls below this one
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Top "55"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 3" Bottom "65"
+ WriteINIStr "$PLUGINSDIR\unconfirm.ini" "Field 4" Top "67"
+ ${EndIf}
+
+ !insertmacro MUI_HEADER_TEXT "$(UN_CONFIRM_PAGE_TITLE)" "$(UN_CONFIRM_PAGE_SUBTITLE)"
+ ; The Summary custom page has a textbox that will automatically receive
+ ; focus. This sets the focus to the Install button instead.
+ !insertmacro MUI_INSTALLOPTIONS_INITDIALOG "unconfirm.ini"
+ GetDlgItem $0 $HWNDPARENT 1
+ ${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 4" "HWND"
+ SetCtlColors $1 0x000000 0xFFFFEE
+ ShowWindow $1 ${SW_HIDE}
+ System::Call "user32::SetFocus(i r0, i 0x0007, i,i)i"
+ ${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 2" "HWND"
+ SendMessage $1 ${WM_SETTEXT} 0 "STR:$INSTDIR"
+ !insertmacro MUI_INSTALLOPTIONS_SHOW
+FunctionEnd
+
+Function un.leaveConfirm
+ ${MUI_INSTALLOPTIONS_READ} $0 "unconfirm.ini" "Settings" "State"
+ StrCmp $0 "3" +1 continue
+ ${MUI_INSTALLOPTIONS_READ} $0 "unconfirm.ini" "Field 3" "State"
+ ${MUI_INSTALLOPTIONS_READ} $1 "unconfirm.ini" "Field 4" "HWND"
+ StrCmp $0 1 +1 +3
+ ShowWindow $1 ${SW_SHOW}
+ Abort
+
+ ShowWindow $1 ${SW_HIDE}
+ Abort
+
+ continue:
+
+ ; Try to delete the app executable and if we can't delete it try to find the
+ ; app's message window and prompt the user to close the app. This allows
+ ; running an instance that is located in another directory. If for whatever
+ ; reason there is no message window we will just rename the app's files and
+ ; then remove them on restart if they are in use.
+ ClearErrors
+ ${DeleteFile} "$INSTDIR\${FileMainEXE}"
+ ${If} ${Errors}
+ ${un.ManualCloseAppPrompt} "${WindowClass}" "$(WARN_MANUALLY_CLOSE_APP_UNINSTALL)"
+ ${EndIf}
+FunctionEnd
+
+!ifndef NO_UNINSTALL_SURVEY
+Function un.preFinish
+ ; Do not modify the finish page if there is a reboot pending
+ ${Unless} ${RebootFlag}
+ ; Don't display the option to take a survey on the finish page if the OS is
+ ; Vista or above since the process will be running elevated.
+ ${If} ${AtLeastWinVista}
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "NumFields" "3"
+ ${Else}
+ ; When we add an optional action to the finish page the cancel button
+ ; is enabled. This disables it and leaves the finish button as the
+ ; only choice.
+ !insertmacro MUI_INSTALLOPTIONS_WRITE "ioSpecial.ini" "settings" "cancelenabled" "0"
+ ${EndIf}
+ ${EndUnless}
+FunctionEnd
+!endif
+
+################################################################################
+# Initialization Functions
+
+Function .onInit
+ ; We need this set up for most of the helper.exe operations.
+ !ifdef AppName
+ ${InitHashAppModelId} "$INSTDIR" "Software\Mozilla\${AppName}\TaskBarIDs"
+ !endif
+ ${UninstallOnInitCommon}
+FunctionEnd
+
+Function un.onInit
+ ${un.GetParent} "$INSTDIR" $INSTDIR
+ ${un.GetLongPath} "$INSTDIR" $INSTDIR
+ ${Unless} ${FileExists} "$INSTDIR\${FileMainEXE}"
+ Abort
+ ${EndUnless}
+
+ StrCpy $LANGUAGE 0
+ ${un.SetBrandNameVars} "$INSTDIR\distribution\setup.ini"
+
+ ; Initialize $hHeaderBitmap to prevent redundant changing of the bitmap if
+ ; the user clicks the back button
+ StrCpy $hHeaderBitmap ""
+
+ !insertmacro InitInstallOptionsFile "unconfirm.ini"
+FunctionEnd
+
+Function .onGUIEnd
+ ${OnEndCommon}
+FunctionEnd
+
+Function un.onGUIEnd
+ ${un.OnEndCommon}
+FunctionEnd
new file mode 100644
--- /dev/null
+++ b/im/installer/windows/nsis/updater_append.ini
@@ -0,0 +1,12 @@
+
+; IMPORTANT: This file should always start with a newline in case a locale
+; provided updater.ini does not end with a newline.
+; Application to launch after an update has been successfully applied. This
+; must be in the same directory or a sub-directory of the directory of the
+; application executable that initiated the software update.
+[PostUpdateWin]
+; ExeRelPath is the path to the PostUpdateWin executable relative to the
+; application executable.
+ExeRelPath=uninstall\helper.exe
+; ExeArg is the argument to pass to the PostUpdateWin exe
+ExeArg=/PostUpdate
new file mode 100644
--- /dev/null
+++ b/im/locales/Makefile.in
@@ -0,0 +1,224 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+relativesrcdir = @relativesrcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/config.mk
+
+DEFINES += -DMOZ_APP_MAXVERSION=$(MOZ_APP_MAXVERSION)
+
+vpath %.xml @srcdir@/en-US/searchplugins
+vpath %.xml $(LOCALE_SRCDIR)/searchplugins
+
+_ABS_SRCDIR := $(abspath $(topsrcdir))
+
+ifndef MOZ_BRANDING_DIRECTORY
+MOZ_BRANDING_DIRECTORY = im/branding/nightly
+endif
+
+SUBMAKEFILES += \
+ $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/Makefile \
+ $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales/Makefile \
+ $(NULL)
+
+# This makefile uses variable overrides from the libs-% target to
+# build non-default locales to non-default dist/ locations. Be aware!
+
+PWD := $(CURDIR)
+
+# These are defaulted to be compatible with the files the wget-en-US target
+# pulls. You may override them if you provide your own files. You _must_
+# override them when MOZ_PKG_PRETTYNAMES is defined - the defaults will not
+# work in that case.
+ZIP_IN ?= $(_ABS_DIST)/$(PACKAGE)
+WIN32_INSTALLER_IN ?= $(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe
+RETRIEVE_WINDOWS_INSTALLER = 1
+
+MOZ_LANGPACK_EID=langpack-$(AB_CD)@addons.instantbird.org
+
+PREF_JS_EXPORTS = $(call MERGE_FILE,all-l10n.js)
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+MOZ_PKG_MAC_DSSTORE=$(_ABS_DIST)/branding/dsstore
+MOZ_PKG_MAC_BACKGROUND=$(_ABS_DIST)/branding/background.png
+MOZ_PKG_MAC_ICON=$(_ABS_DIST)/branding/disk.icns
+MOZ_PKG_MAC_EXTRA=--symlink "/Applications:/ "
+endif
+
+ifeq (WINNT,$(OS_ARCH))
+UNINSTALLER_PACKAGE_HOOK = $(RM) -r $(STAGEDIST)/uninstall; \
+ $(NSINSTALL) -D $(STAGEDIST)/uninstall; \
+ cp ../installer/windows/l10ngen/helper.exe $(STAGEDIST)/uninstall; \
+ $(RM) $(_ABS_DIST)/l10n-stage/setup.exe; \
+ cp ../installer/windows/l10ngen/setup.exe $(_ABS_DIST)/l10n-stage; \
+ $(NULL)
+endif
+
+include $(topsrcdir)/config/rules.mk
+
+include $(topsrcdir)/mozilla/toolkit/locales/l10n.mk
+
+# Remove installer/sea/ from installer paths.
+PKG_INST_PATH =
+
+$(STAGEDIST): $(DIST)/branding
+
+$(DIST)/branding:
+ $(NSINSTALL) -D $@
+
+SEARCH_PLUGINS = $(shell cat $(call MERGE_FILE,/searchplugins/list.txt))
+
+libs:: $(addsuffix .xml,$(SEARCH_PLUGINS))
+ $(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/searchplugins
+
+install:: $(addsuffix .xml,$(SEARCH_PLUGINS))
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/searchplugins
+
+libs-%:
+ $(NSINSTALL) -D $(DIST)/install
+ @$(MAKE) -C ../../mozilla/toolkit/locales libs-$*
+ @$(MAKE) -C ../../chat/locales AB_CD=$* XPI_NAME=locale-$*
+ @$(MAKE) -C ../../mozilla/extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
+ @$(MAKE) -C ../../mozilla/intl/locales AB_CD=$* XPI_NAME=locale-$*
+ @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref
+ @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$*
+
+
+# Note the funny extra "../" in SFX_HEADER is because the repackage-zip command
+# is actually run effectively from within the mozilla/ part of the objdir, so
+# topsrcdir points to the wrong place and we have to go one directory higher.
+repackage-win32-installer: WIN32_INSTALLER_OUT="$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe"
+repackage-win32-installer: $(WIN32_INSTALLER_IN) $(SUBMAKEFILES)
+ @echo "Repackaging $(WIN32_INSTALLER_IN) into $(WIN32_INSTALLER_OUT)."
+ $(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY) export
+ $(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen l10ngen/setup.exe l10ngen/7zSD.sfx
+ $(MAKE) repackage-zip \
+ AB_CD=$(AB_CD) \
+ MOZ_PKG_FORMAT=SFX7Z \
+ ZIP_IN=$(WIN32_INSTALLER_IN) \
+ ZIP_OUT=$(WIN32_INSTALLER_OUT) \
+ SFX_HEADER="$(PWD)/../installer/windows/l10ngen/7zSD.sfx \
+ $(_ABS_SRCDIR)/im/installer/windows/app.tag"
+
+ifeq (WINNT,$(OS_ARCH))
+repackage-win32-installer-%: $(WIN32_INSTALLER_IN) libs-%
+ @$(MAKE) repackage-win32-installer AB_CD=$* WIN32_INSTALLER_IN=$(WIN32_INSTALLER_IN)
+else
+repackage-win32-installer-%: ;
+endif
+
+ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
+STAGEDIST = $(_ABS_DIST)/l10n-stage/$(MOZ_PKG_APPNAME)/$(_APPNAME)/Contents/MacOS
+else
+STAGEDIST = $(_ABS_DIST)/l10n-stage/$(MOZ_PKG_DIR)
+endif
+
+# During repackaging, we never have an universal/ subfolder.
+STAGEPATH =
+
+clobber-zip:
+ $(RM) $(STAGEDIST)/chrome/$(AB_CD).jar \
+ $(STAGEDIST)/chrome/$(AB_CD).manifest \
+ $(STAGEDIST)/defaults/pref/all-l10n.js
+ $(RM) -rf $(STAGEDIST)/searchplugins \
+ $(STAGEDIST)/dictionaries \
+ $(STAGEDIST)/hyphenation/$(AB_CD) \
+ $(STAGEDIST)/isp/$(AB_CD) \
+ $(STAGEDIST)/chrome/$(AB_CD)
+
+langpack: langpack-$(AB_CD)
+
+# This is a generic target that will make a langpack, repack ZIP (+tarball)
+# builds, and repack and installer if applicable. It is called from the
+# tinderbox scripts. Alter it with caution.
+
+installers-%: clobber-% langpack-% repackage-win32-installer-% repackage-zip-%
+ @echo "repackaging done"
+
+ifdef MOZ_UPDATER
+libs:: $(call MERGE_FILE,updater/updater.ini) $(call mkdir_deps,$(DIST)/bin)
+ifeq ($(OS_ARCH),WINNT)
+ cat $< $(srcdir)/../installer/windows/nsis/updater_append.ini | \
+ sed -e "s/^InfoText=/Info=/" -e "s/^TitleText=/Title=/" | \
+ sed -e "s/%MOZ_APP_DISPLAYNAME%/$(MOZ_APP_DISPLAYNAME)/" > \
+ $(FINAL_TARGET)/updater.ini
+else
+ cat $< | \
+ sed -e "s/^InfoText=/Info=/" -e "s/^TitleText=/Title=/" | \
+ sed -e "s/%MOZ_APP_DISPLAYNAME%/$(MOZ_APP_DISPLAYNAME)/" > \
+ $(FINAL_TARGET)/updater.ini
+endif
+endif
+
+ident:
+ @printf "ib_revision "
+ @$(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py \
+ $(STAGEDIST)/application.ini App SourceStamp
+ @printf "moz_revision "
+ @$(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py \
+ $(STAGEDIST)/platform.ini Build SourceStamp
+ @printf "buildid "
+ @$(PYTHON) $(MOZILLA_SRCDIR)/config/printconfigsetting.py \
+ $(STAGEDIST)/application.ini App BuildID
+
+#These make targets call prepare-repackages by setting different UPLOAD_DIR
+prepare-upload-latest-%:
+ @$(MAKE) prepare-repackages-$* UPLOAD_DIR=$(DIST)/upload/latest
+
+prepare-upload-dated-%:
+ @$(MAKE) prepare-repackages-$* UPLOAD_DIR=$(DIST)/upload/`date "+%Y-%m-%d-%H"`-$(MOZ_PKG_APPNAME)$(MOZ_APP_VERSION)-l10n
+
+# This target will generate a UPLOAD_DIR folder with
+# l10n repackages in the way that we offer l10n nightlies
+# 1) the package/binary
+# 2) the langpack xpi
+# 3) the installer (on windows)
+# To set the paths those packages should end up, override the following vars:
+# PKG_PATH, PKG_LANGPACK_PATH, PKG_INST_PATH
+prepare-repackages-%:
+ifndef UPLOAD_DIR
+ $(error UPLOAD_DIR not defined)
+endif
+ $(NSINSTALL) -D $(UPLOAD_DIR)
+ $(NSINSTALL) -D $(UPLOAD_DIR)/$(PKG_LANGPACK_PATH)
+# Move the langpack
+ mv $(DIST)/$(PKG_LANGPACK_PATH)$(PKG_LANGPACK_BASENAME).xpi \
+ $(UPLOAD_DIR)/$(PKG_LANGPACK_PATH)$(PKG_LANGPACK_BASENAME).xpi
+# Move the repackage
+ mv "$(DIST)/$(PACKAGE)" \
+ "$(UPLOAD_DIR)/$(PACKAGE)"
+# Move the windows installer
+ifeq (WINNT, $(OS_ARCH))
+ mv "$(DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe" \
+ "$(UPLOAD_DIR)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe"
+endif
+# Set the permissions that the folders will have in ftp once uploaded
+ chmod -vR 775 $(UPLOAD_DIR)
+
+merge-%:
+ifdef LOCALE_MERGEDIR
+ $(RM) -rf $(LOCALE_MERGEDIR)
+ MACOSX_DEPLOYMENT_TARGET= compare-locales -m $(LOCALE_MERGEDIR) $(srcdir)/l10n.ini $(L10NBASEDIR) $*
+endif
+ @echo
+
+IB_L10N_REPO_BASE = https://hg.instantbird.org/l10n
+MOZ_L10N_REPO_BASE = http://hg.mozilla.org/releases/l10n-mozilla-2.0
+
+checkout-%: AB_CD=$*
+checkout-%:
+ mkdir -p $(topsrcdir)/$(L10NBASEDIR)
+ $(PYTHON) $(topsrcdir)/client.py checkout-l10n --skip-instantbird --clean --l10n-base-dir $(L10NBASEDIR) --locale $(AB_CD)
+
+repack-%: AB_CD=$*
+repack-%:
+ make checkout-$(AB_CD)
+ make merge-$(AB_CD)
+ make installers-$(AB_CD)
new file mode 100755
--- /dev/null
+++ b/im/locales/en-US/all-l10n.js
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#filter substitution
+
+pref("general.useragent.locale", "@AB_CD@");
+pref("spellchecker.dictionary", "@AB_CD@");
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/aboutDialog.dtd
@@ -0,0 +1,10 @@
+<!ENTITY aboutDialog.title "About &brandFullName;">
+<!ENTITY credits.label "Credits">
+<!ENTITY credits.accesskey "C">
+<!ENTITY aboutLink.label "< About &brandShortName;">
+<!ENTITY aboutLink.accesskey "A">
+<!ENTITY aboutVersion "version">
+<!ENTITY geckoVersion "Gecko">
+<!ENTITY libpurpleVersion "libpurple">
+<!-- Use the ©rightYear; entity to place the current year. -->
+<!ENTITY copyrightText2 "©2007-©rightYear; Contributors. This program is free software; you can redistribute it and/or modify it under the terms of the GNU GPL license version 2.0 or later.">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/account.dtd
@@ -0,0 +1,16 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY accountWindow.title "Account properties">
+<!ENTITY accountWindow.width "300">
+<!ENTITY account.general "General">
+<!ENTITY account.advanced "Advanced Options">
+<!ENTITY account.name "Username:">
+<!ENTITY account.password "Password:">
+<!ENTITY account.alias "Alias:">
+<!ENTITY account.newMailNotification "Notify on new Mail">
+<!ENTITY account.autojoin "Auto-Joined Channels:">
+<!ENTITY account.proxySettings.caption "Proxy Settings:">
+<!ENTITY account.proxySettings.change.label "Change…">
+<!ENTITY account.proxySettings.change.accessKey "C">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/accountWizard.dtd
@@ -0,0 +1,36 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY windowTitle.label "Account Wizard">
+
+<!ENTITY accountWelcomeTitle.label "Welcome">
+<!ENTITY accountWelcomeInfo.label "This wizard will help you in the process of setting up your IM account in order to use it with &brandShortName;.">
+
+<!ENTITY accountProtocolTitle.label "Protocol">
+<!ENTITY accountProtocolInfo.label2 "Please choose the protocol of your IM account.">
+<!ENTITY accountProtocolGetMore.label "Get more…">
+<!ENTITY accountProtocolShowMore.label "Show all protocols">
+<!ENTITY accountProtocolShowMore.description "Choose from the full list of protocols">
+
+<!ENTITY accountUsernameTitle.label "Username">
+<!ENTITY accountUsernameDuplicate.label "This account is already configured!">
+
+<!ENTITY accountPasswordTitle.label "Password">
+<!ENTITY accountPasswordInfo.label "Please enter your password in the box below.">
+<!ENTITY accountPasswordField.label "Password:">
+<!ENTITY accountPasswordManager.label "The password entered here will be stored in the Password Manager. Leave this box empty if you want to be prompted for your password each time this account is connected.">
+
+<!ENTITY accountAdvancedTitle.label "Advanced Options">
+<!ENTITY accountAdvancedInfo.label "Feel free to skip this step if you want to.">
+<!ENTITY accountAdvanced.newMailNotification.label "Notify on new Mail">
+<!ENTITY accountAliasGroupbox.caption "Local Alias">
+<!ENTITY accountAliasField.label "Alias:">
+<!ENTITY accountAliasInfo.label "This will only be displayed in your conversations when you talk, remote buddies won't see it.">
+<!ENTITY accountProxySettings.caption "Proxy Settings">
+<!ENTITY accountProxySettings.change.label "Change…">
+<!ENTITY accountProxySettings.change.accessKey "C">
+
+<!ENTITY accountSummaryTitle.label "Summary">
+<!ENTITY accountSummaryInfo.label "A summary of the information you entered is displayed below. Please check it before the account is created.">
+<!ENTITY accountSummary.connectAutomatically.label "Connect this account automatically.">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/accountWizard.properties
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE
+# The selected protocols below should be the most relevant
+# to the target language / location and comma delimited.
+# Exceeding 4 protocols may cause scrolling. A list of the
+# available protocols can be found at
+# https://wiki.instantbird.org/Protocol_Identifiers
+topProtocol.list=prpl-gtalk,prpl-facebook,prpl-twitter,prpl-aim,prpl-msn,prpl-yahoo
+
+# LOCALIZATION NOTE
+# These are the descriptions of the top protocols specified above.
+# A description should be provided for each protocol ID listed above.
+topProtocol.prpl-gtalk.description=Talk to your Gmail contacts
+topProtocol.prpl-facebook.description=Communicate with Facebook friends
+topProtocol.prpl-twitter.description=Stay up to date with your Twitter timeline
+topProtocol.prpl-aim.description=Chat with your buddies on AOL Instant Messenger
+topProtocol.prpl-msn.description=Microsoft Windows Live Messenger (formerly MSN)
+topProtocol.prpl-yahoo.description=Chat with friends using Yahoo! Messenger
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/accounts.dtd
@@ -0,0 +1,34 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY accounts.title "Accounts - &brandShortName;">
+<!ENTITY accountManager.width "450">
+<!ENTITY accountManager.newAccount.label "New Account">
+<!ENTITY accountManager.newAccount.accesskey "N">
+<!ENTITY accountManager.close.label "Close">
+<!ENTITY accountManager.close.accesskey "l">
+<!-- This should match account.commandkey in instantbird.dtd -->
+<!ENTITY accountManager.close.commandkey "a">
+<!-- This title must be short, displayed with a big font size -->
+<!ENTITY accountManager.noAccount.title "No account configured yet!">
+<!ENTITY accountManager.noAccount.description "Click on the &accountManager.newAccount.label; button to let &brandShortName; guide you through the process of configuring one.">
+<!ENTITY account.autoSignOn.label "Sign-on at startup">
+<!ENTITY account.autoSignOn.accesskey "S">
+<!ENTITY account.connect.label "Connect">
+<!ENTITY account.connect.accesskey "o">
+<!ENTITY account.disconnect.label "Disconnect">
+<!ENTITY account.disconnect.accesskey "i">
+<!ENTITY account.delete.label "Delete">
+<!ENTITY account.delete.accesskey "D">
+<!ENTITY account.edit.label "Properties">
+<!ENTITY account.edit.accesskey "P">
+<!ENTITY account.moveup.label "Move up">
+<!ENTITY account.movedown.label "Move down">
+<!ENTITY account.cancelReconnection.label "Cancel reconnection">
+<!ENTITY account.cancelReconnection.accesskey "A">
+<!ENTITY account.copyDebugLog.label "Copy Debug Log">
+<!ENTITY account.copyDebugLog.accesskey "C">
+<!ENTITY account.connecting "Connecting…">
+<!ENTITY account.disconnecting "Disconnecting…">
+<!ENTITY account.disconnected "Not Connected">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/accounts.properties
@@ -0,0 +1,36 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# %S is replaced by the name of a protocol
+protoOptions=%S Options
+accountProtocol=Protocol:
+accountUsername=Username:
+accountColon=%S:
+accountUsernameInfo=Please enter the username for your %S account.
+accountUsernameInfoWithDescription=Please enter the username (%S) for your %S account.
+
+account.connection.error=Error: %S
+account.connection.errorUnknownPrpl= No '%S' protocol plugin.
+account.connection.errorEnteringPasswordRequired=Entering a password is required to connect this account.
+account.connection.errorCrashedAccount=A crash occurred while connecting this account.
+account.connection.progress=Connecting: %S…
+account.connecting=Connecting…
+account.connectedForSeconds=Connected for a few seconds.
+account.connectedForDouble=Connected for %S %S and %S %S.
+account.connectedForSingle=Connected for about %S %S.
+account.reconnectInDouble=Reconnection in %S %S and %S %S.
+account.reconnectInSingle=Reconnection in %S %S.
+account.deletePrompt.title=Delete Account?
+account.deletePrompt.message=Are you sure you want to delete this account?
+account.deletePrompt.checkbox=Do ¬ ask next time
+account.deletePrompt.button=&Delete
+
+accountsManager.notification.button.accessKey=C
+accountsManager.notification.button.label=Connect Now
+accountsManager.notification.userDisabled.label=You have disabled automatic connections.
+accountsManager.notification.safeMode.label=Automatic Connection Settings have been ignored because the application is currently running in Safe-Mode.
+accountsManager.notification.startOffline.label=Automatic Connection Settings have been ignored because the application was started in Offline Mode.
+accountsManager.notification.crash.label=The last run exited unexpectedly while connecting. Automatic Connections have been disabled to give you an opportunity to Edit your Settings.
+accountsManager.notification.singleCrash.label=A previous run exited unexpectedly while connecting a new or edited account. It has not been connected so that you can Edit its Settings.;A previous run exited unexpectedly while connecting #1 new or edited accounts. They have not been connected so that you can Edit their Settings.
+accountsManager.notification.other.label=Automatic connection has been disabled.
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/addbuddy.dtd
@@ -0,0 +1,8 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY addContactWindow.title "Add Contact">
+<!ENTITY name.label "Username">
+<!ENTITY account.label "Account">
+<!ENTITY tag.label "Group">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/buddytooltip.properties
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+buddy.username=Username
+buddy.loggedIn=Logged In
+buddy.account=Account
+contact.tags=Tags
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/conversation.properties
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+contextShowLogs.label=Show Logs
+contextShowLogs.accesskey=L
+contextCloseConv.label=Close Conversation
+contextCloseConv.accesskey=v
+contextHideConv.label=Put Conversation on Hold
+contextHideConv.accesskey=h
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/core.properties
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+aboutCommand.help=about <page>: display about:<page> in a new tab.
+aboutCommand.invalidPageMessage="%S" is not a valid about page.
+
+startupFailure.title=Instantbird - Start up failure
+startupFailure.apologize=Instantbird encountered a serious error and cannot start, we apologize for the inconvenience.
+startupFailure.update=An updated version will probably be available shortly to fix the problem.
+
+startupFailure.purplexpcomFileError=Description: The file "instantbird.xpt" is missing or corrupted.
+startupFailure.xpcomRegistrationError=Description: XPCOM registration of the core component failed.
+startupFailure.purplexpcomInitError=An exception occurred while initializing the core component: %S
+
+startupFailure.buttonUpdate=Check for Updates
+startupFailure.buttonClose=Close Instantbird
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/credits.dtd
@@ -0,0 +1,23 @@
+<!ENTITY credit.title "&brandFullName; Credits">
+<!ENTITY credit.lead "Lead Developer">
+<!ENTITY credit.contributors "Contributors">
+<!ENTITY credit.thanks "Special Thanks To">
+
+<!ENTITY credit.license "license">
+
+<!-- localization credits look like this: -->
+<!--
+<!ENTITY credit.translation
+ "<h3>Translators</h3><ul><li>Name Here</li></ul>">
+-->
+<!ENTITY credit.translation "">
+
+<!ENTITY credit.poweredByGecko "Powered by Gecko™ and libpurple">
+
+<!-- copied from what used to be
+toolkit/locales/en-US/chrome/global/license.dtd in mozilla 1.9.2 -->
+<!ENTITY license.part0 "is copyright">
+<!ENTITY license.part1 "by its">
+<!ENTITY license.contrib "contributors">
+<!ENTITY license.part2 "according to terms set out in the">
+<!ENTITY license.part3 "document. All Rights Reserved.">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/engineManager.dtd
@@ -0,0 +1,26 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY engineManager.title "Manage Search Engine List">
+<!ENTITY engineManager.style "min-width: 35em;">
+<!ENTITY engineManager.intro "You have the following search engines installed:">
+
+<!ENTITY columnLabel.name "Name">
+<!ENTITY columnLabel.keyword "Keyword">
+
+<!-- Buttons -->
+<!ENTITY up.label "Move Up">
+<!ENTITY up.accesskey "U">
+<!ENTITY dn.label "Move Down">
+<!ENTITY dn.accesskey "D">
+<!ENTITY remove.label "Remove">
+<!ENTITY remove.accesskey "R">
+<!ENTITY edit.label "Edit Keyword…">
+<!ENTITY edit.accesskey "t">
+
+<!ENTITY addEngine.label "Get more search engines…">
+<!ENTITY addEngine.accesskey "A">
+
+<!ENTITY restoreDefaults.label "Restore Defaults">
+<!ENTITY restoreDefaults.accesskey "e">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/engineManager.properties
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+editTitle=Edit Keyword
+editMsg=Enter a new keyword for "%S":
+duplicateTitle=Duplicate Keyword
+duplicateEngineMsg=You have chosen a keyword that is currently in use by "%S". Please select another.
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/extensions-discover.dtd
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY extensions-discover.description "Add-ons are applications
+ that let you personalize &brandShortName; with extra functionality
+ or style. Try some message styles, emoticon themes or usability
+ extensions to make &brandShortName; your own.">
+
+<!ENTITY extensions-discover.footer "You can search for add-ons using the above searchbox, or browse:">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/extensions.properties
@@ -0,0 +1,44 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# These are originally from
+# mozilla-central/source/browser/locales/en-US/chrome/browser/browser.properties
+# and can be imported to avoid retranslating strings.
+
+xpinstallPromptWarning=%S prevented this site (%S) from asking you to install software on your computer.
+xpinstallPromptAllowButton=Allow
+# Accessibility Note:
+# Be sure you do not choose an accesskey that is used elsewhere in the active context (e.g. main menu bar, submenu of the warning popup button)
+# See http://www.mozilla.org/access/keyboard/accesskey for details
+xpinstallPromptAllowButton.accesskey=A
+xpinstallDisabledMessageLocked=Software installation has been disabled by your system administrator.
+xpinstallDisabledMessage=Software installation is currently disabled. Click Enable and try again.
+xpinstallDisabledButton=Enable
+xpinstallDisabledButton.accesskey=n
+
+# LOCALIZATION NOTE (addonsInstalled, addonsInstalledNeedsRestart):
+# Semi-colon list of plural forms. See:
+# http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 first add-on's name, #2 number of add-ons, #3 application name
+addonsInstalled=#1 has been installed successfully.;#2 add-ons have been installed successfully.
+addonsInstalledNeedsRestart=#1 will be installed after you restart #3.;#2 add-ons will be installed after you restart #3.
+addonInstallRestartButton=Restart Now
+addonInstallRestartButton.accesskey=R
+
+# LOCALIZATION NOTE (addonError-1, addonError-2, addonError-3, addonError-4):
+# #1 is the add-on name, #2 is the host name, #3 is the application name
+# #4 is the application version
+addonError-1=The add-on could not be downloaded because of a connection failure on #2.
+addonError-2=The add-on from #2 could not be installed because it does not match the add-on #3 expected.
+addonError-3=The add-on downloaded from #2 could not be installed because it appears to be corrupt.
+addonError-4=#1 could not be installed because #3 cannot modify the needed file.
+
+# LOCALIZATION NOTE (addonLocalError-1, addonLocalError-2, addonLocalError-3, addonLocalError-4, addonErrorIncompatible, addonErrorBlocklisted):
+# #1 is the add-on name, #3 is the application name, #4 is the application version
+addonLocalError-1=This add-on could not be installed because of a filesystem error.
+addonLocalError-2=This add-on could not be installed because it does not match the add-on #3 expected.
+addonLocalError-3=This add-on could not be installed because it appears to be corrupt.
+addonLocalError-4=#1 could not be installed because #3 cannot modify the needed file.
+addonErrorIncompatible=#1 could not be installed because it is not compatible with #3 #4.
+addonErrorBlocklisted=#1 could not be installed because it has a high risk of causing stability or security problems.
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/instantbird.dtd
@@ -0,0 +1,147 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY convWindow.title "Conversations - &brandShortName;">
+<!ENTITY convWindow.titlemodifiermenuseparator " - ">
+<!ENTITY convWindow.titlemodifier "&brandShortName;">
+<!ENTITY logsWindow.title "Conversation logs - &brandShortName;">
+<!ENTITY logsWindow.titlemodifiermenuseparator " - ">
+<!ENTITY logsWindow.titlemodifier "&brandShortName;">
+<!ENTITY logsWindow.corruptlogfile "Empty or corrupt log file.">
+<!ENTITY file.menu "File">
+<!ENTITY file.accesskey "F">
+
+<!-- Copied from mozilla/browser/locales/en-US/chrome/browser/browser.dtd -->
+<!ENTITY quitApplicationCmdWin.label "Exit">
+<!ENTITY quitApplicationCmdWin.accesskey "x">
+<!ENTITY quitApplicationCmd.label "Quit">
+<!ENTITY quitApplicationCmd.accesskey "Q">
+<!ENTITY quitApplicationCmdMac.label "Quit &brandShortName;">
+<!ENTITY quitApplicationCmdMac.key "Q">
+
+<!ENTITY addContact "Add Contact…">
+<!ENTITY addContact.commandkey "b">
+<!ENTITY addContact.accesskey "C">
+<!ENTITY joinChat "Join Chat…">
+<!ENTITY joinChat.commandkey "j">
+<!ENTITY joinChat.accesskey "J">
+<!ENTITY newtab "New Conversation…">
+<!ENTITY newtab.commandkey "t">
+<!ENTITY newtab.accesskey "n">
+<!ENTITY setStatusTo "Set Status to…">
+<!ENTITY setStatusTo.accesskey "S">
+<!ENTITY available "Available">
+<!ENTITY available.accesskey "A">
+<!ENTITY unavailable "Unavailable">
+<!ENTITY unavailable.accesskey "U">
+<!ENTITY offline "Offline">
+<!ENTITY offline.accesskey "O">
+<!ENTITY tools.menu "Tools">
+<!ENTITY tools.accesskey "T">
+<!ENTITY accountManager "Accounts">
+<!ENTITY account.commandkey "a">
+<!ENTITY account.accesskey "A">
+<!ENTITY contacts.label "Contacts">
+<!ENTITY contacts.accesskey "C">
+<!ENTITY contacts.commandkey "c">
+<!ENTITY addonManager "Add-ons">
+<!ENTITY addonManager.accesskey "d">
+<!ENTITY addonManager.commandkey "d">
+<!ENTITY addonManager.key "d">
+<!ENTITY checkForUpdates "Check for Updates">
+<!ENTITY help.menu "Help">
+<!ENTITY help.accesskey "H">
+<!-- LOCALIZATION NOTE (helpWin.menu):
+ Some localizations of Windows (e.g. French, German) use "?" for the help
+ button in the menubar. -->
+<!ENTITY helpWin.menu "Help">
+<!ENTITY helpWin.accesskey "H">
+<!ENTITY about.menu "About &brandShortName;">
+<!ENTITY about.accesskey "A">
+
+<!ENTITY conversation.contextMenu.close "Close Tab">
+<!ENTITY chat.participants "Participants:">
+
+<!ENTITY errorConsoleCmd.label "Error Console">
+<!ENTITY errorConsoleCmd.accesskey "C">
+<!ENTITY errorConsoleCmd.commandkey "j">
+
+<!ENTITY preferencesCmd.label "Options…">
+<!ENTITY preferencesCmd.accesskey "O">
+<!ENTITY preferencesCmdUnix.label "Preferences">
+<!ENTITY preferencesCmdUnix.accesskey "n">
+
+<!ENTITY textEnlarge.commandkey "+">
+<!ENTITY textEnlarge.commandkey2 "=">
+<!ENTITY textEnlarge.commandkey3 "">
+<!ENTITY textReduce.commandkey "-">
+<!ENTITY textReduce.commandkey2 "">
+<!ENTITY textReset.commandkey "0">
+<!ENTITY textReset.commandkey2 "">
+
+<!ENTITY findOnCmd.commandkey "f">
+<!ENTITY findAgainCmd.commandkey "g">
+<!ENTITY findAgainCmd.commandkey2 "VK_F3">
+
+<!ENTITY openLinkCmd.label "Open Link…">
+<!ENTITY openLinkCmd.accesskey "O">
+<!ENTITY copyLinkCmd.label "Copy Link Location">
+<!ENTITY copyLinkCmd.accesskey "a">
+<!ENTITY copyEmailCmd.label "Copy Email Address">
+<!ENTITY copyEmailCmd.accesskey "E">
+<!ENTITY engineManagerCmd.label "Manage Search Engines…">
+
+<!ENTITY userIcon.label "Change your icon">
+<!ENTITY contactsHeader.label "Contacts">
+<!ENTITY convsHeader.label "Conversations on hold">
+
+<!ENTITY openConversationCmd.label "Start a conversation">
+<!ENTITY openConversationCmd.accesskey "c">
+<!ENTITY showConversationCmd.label "Show conversation">
+<!ENTITY showConversationCmd.accesskey "S">
+<!ENTITY closeConversationCmd.label "Close conversation">
+<!ENTITY closeConversationCmd.accesskey "C">
+<!ENTITY aliasCmd.label "Rename">
+<!ENTITY aliasCmd.accesskey "R">
+<!ENTITY detachCmd.label "Detach from contact">
+<!ENTITY detachCmd.accesskey "D">
+<!ENTITY deleteCmd.label "Remove">
+<!ENTITY deleteCmd.accesskey "v">
+<!ENTITY tagsCmd.label "Tags…">
+<!ENTITY tagsCmd.accesskey "T">
+<!ENTITY addNewTagCmd.label "Add New Tag…">
+<!ENTITY addNewTagCmd.accesskey "N">
+<!ENTITY showLogsCmd.label "Show Logs">
+<!ENTITY showLogsCmd.accesskey "L">
+<!ENTITY hideTagCmd.label "Hide Tag">
+<!ENTITY hideTagCmd.accesskey "H">
+<!ENTITY visibleTagsCmd.label "Visible Tags…">
+<!ENTITY visibleTagsCmd.accesskey "V">
+<!ENTITY showOfflineContactsCmd.label "Show Offline Contacts">
+<!ENTITY showOfflineContactsCmd.accesskey "O">
+
+<!ENTITY expandContactTooltip "Expand">
+<!ENTITY collapseContactTooltip "Collapse">
+
+<!ENTITY contactDropTarget2 "Drop another contact here to merge them.">
+
+<!ENTITY hideGroupTooltip "Hide">
+
+<!-- Copied from mozilla/browser/locales/en-US/chrome/browser/baseMenuOverlay.dtd -->
+<!-- Mac OS X Window Menu -->
+<!ENTITY windowMenu.label "Window">
+<!ENTITY minimizeWindow.label "Minimize">
+<!ENTITY minimizeWindow.key "m">
+<!ENTITY bringAllToFront.label "Bring All to Front">
+<!ENTITY zoomWindow.label "Zoom">
+
+<!-- Mac OS X Application Menu (Cocoa widgets) -->
+<!ENTITY preferencesCmdMac.label "Preferences…">
+<!ENTITY preferencesCmdMac.commandkey ",">
+<!ENTITY servicesMenuMac.label "Services">
+<!ENTITY hideThisAppCmdMac.label "Hide &brandShortName;">
+<!ENTITY hideThisAppCmdMac.commandkey "H">
+<!ENTITY hideOtherAppsCmdMac.label "Hide Others">
+<!ENTITY hideOtherAppsCmdMac.commandkey "H">
+<!ENTITY showAllAppsCmdMac.label "Show All">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/instantbird.properties
@@ -0,0 +1,153 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE (contextMenuSearchText): %1$S is the search engine,
+# %2$S is the selection string.
+contextMenuSearchText=Search %1$S for "%2$S"
+contextMenuSearchText.accesskey=S
+contextMenuSearchWith=Search "%S" with…
+
+newTagPromptTitle=New Tag
+newTagPromptMessage=Please enter the name of the new tag:
+
+#LOCALIZATION NOTE
+# this is used in the addBuddies dialog if the list of existing groups is empty
+defaultGroup=Contacts
+
+#LOCALIZATION NOTE This string appears in a notification bar at the
+# top of the Contacts window when someone added the user to his/her
+# contact list, to request the permission from the user to share
+# status information with this potential new contact.
+# %S is replaced with the user name of the potential new contact.
+buddy.authRequest.label=%S wants to chat with you
+buddy.authRequest.allow.label=Allow
+buddy.authRequest.allow.accesskey=A
+buddy.authRequest.deny.label=Deny
+buddy.authRequest.deny.accesskey=D
+
+#LOCALIZATION NOTE
+# %S here will be replaced by the alias (or username) of a contact about
+# to be removed from the contact list.
+contact.deletePrompt.title=Delete %S?
+
+#LOCALIZATION NOTE
+# The first parameter of this string will by the name of a contact (either
+# the alias followed by the username between parenthesis if an alias
+# is set, or only the username otherwise).
+# The second parameter will be the name of the protocol on which this
+# contact is removed (for example: AIM, MSN, Google Talk).
+#
+# Please find a wording that will keep the username as close as
+# possible to the beginning of the string, because this is the
+# important information that an user should see when looking quickly
+# at this prompt.
+contact.deletePrompt.message=%S will be permanently removed from your %S contact list if you continue.
+
+#LOCALIZATION NOTE
+# the & symbol indicates the position of the character that should be
+# used as the accesskey for this button.
+contact.deletePrompt.button=&Delete
+
+group.otherContacts.name=Other Contacts
+#LOCALIZATION NOTE
+# %S here will be replaced by the tag name
+group.hidePrompt.title=Hide %S?
+
+#LOCALIZATION NOTE %S here will be replaced by the tag name.
+# The translation for 'Visible Tags…' here should match the translation of
+# visibleTagsCmd.label in instantbird.dtd
+# The translation for 'Other Contacts' should match group.otherContacts.name
+group.hidePrompt.message=The tag '%S' will no longer be visible. Use the 'Visible Tags…' context menu item to show it again.\n\nContacts that have no visible tag will be displayed in the 'Other Contacts' special group at the bottom of the list.
+
+#LOCALIZATION NOTE
+# The following strings are used as textual representation of contacts, that
+# screenreaders can read out loud for visually impaired users.
+# %1$S is the displayname of the contact
+# %2$S is the status text of this contact
+# %3$S is a list of the contact's buddies, joined by contact.buddyListSeparator
+# Example for the compact/collapsed state of a contact: "John Doe (I'm away)"
+contact.collapsed=%1$S (%2$S)
+# Example for the expanded state: "John Doe (I'm away): John Doe, JohnDoe@gmail.com"
+contact.expanded=%1$S (%2$S): %3$S
+# The trailing space here is intentional.
+contact.buddySeparator=,
+
+#LOCALIZATION NOTE
+# the & symbol indicates the position of the character that should be
+# used as the accesskey for this button.
+group.hidePrompt.button=&Hide
+
+group.hidePrompt.checkbox=Show next time
+
+displayNameEmptyText=Display Name
+userIconFilePickerTitle=Select the new icon…
+
+isTyping=%S is typing.
+hasStoppedTyping=%S has stopped typing.
+
+noTopic=No topic message for this room.
+
+#LOCALIZATION NOTE
+# This will appear in a tooltip when hovering the protocol icon in the toolbar
+# at the top of multi-user chats.
+# %1$S is the conversation name (IRC example: #instantbird)
+# %2$S is the account name (IRC example: user@irc.mozilla.org)
+# %3$S is the protocol name (example: IRC)
+targetTooltipChat=%1$S via %2$S (%3$S)
+#LOCALIZATION NOTE
+# same tooltip text for single user conversations:
+# %1$S is the conversation name (AIM screenname, ICQ number, ...)
+# %2$S is the protocol name (example: AIM)
+targetTooltipIM=%1$S (%2$S)
+#LOCALIZATION NOTE
+# This will be appended to targetTooltipIM if the conversation is with a contact
+# and it's possible to talk to another buddy of the same contact.
+targetChangeable=\nClick to change
+
+#LOCALIZATION NOTE
+# this is used as part of the title of the window displaying conversation logs
+# %S will be replaced by the name of a buddy of the name of a chat room.
+logs=%S logs
+
+#LOCALIZATION NOTE
+# These are special entries in the log tree for the corresponding days.
+log.today=Today
+log.yesterday=Yesterday
+
+#LOCALIZATION NOTE
+# These are special groups in the log tree for the last 3-7 days and
+# the last 8-14 days.
+log.currentWeek=This Week
+log.previousWeek=Last Week
+
+#LOCALIZATION NOTE
+# This is shown when an unknown command (/foo) is attempted. %S is the command.
+unknownCommand=%S is not a supported command. Type /help to see the list of commands.
+
+#LOCALIZATION NOTE
+# Shown when the user attempts to send a message while the network (necko) is offline.
+networkOffline=Your account is disconnected because there is no network connection.
+
+#LOCALIZATION NOTE
+# This is shown when the user attempts to send a message while the status is offline.
+statusOffline=Your account is disconnected because your status is currently set to offline.
+
+#LOCALIZATION NOTE
+# This is shown when the user attempts to send a message to a disconnected account.
+# %1$S is the name of the protocol of the account, %2$S the name of the account.
+accountDisconnected=Your %1$S account %2$S is disconnected.
+
+#LOCALIZATION NOTE
+# These appear in the context menu of the chat participants in the
+# participant list.
+contextmenu.nickOpenConv=Private Conversation
+contextmenu.nickShowLogs=Show Logs
+contextmenu.nickAddContact=Add Contact…
+# These appear in the context menu for the nicks of chat participants
+# highlighted in messages, and extend those for the participant list
+# by mentioning the nick.
+# %S is the nick of the chat participant.
+contextmenu.nickOpenConv.withNick=Private Conversation with %S
+contextmenu.nickShowLogs.withNick=Show Logs for %S
+contextmenu.nickAddContact.withNick=Add %S to Contacts…
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/joinChat.dtd
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY joinChatWindow.title "Join chat">
+<!ENTITY name.label "Room">
+<!ENTITY optional.label "(optional)">
+<!ENTITY account.label "Account">
+<!ENTITY autojoin.label "Auto-join this Chat Room">
+<!ENTITY autojoin.accesskey "A">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/mintrayr.dtd
@@ -0,0 +1,11 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY mintrayr.minimize "Minimize to Tray">
+<!ENTITY mintrayr.minimize.tip "Minimizes the current window to the system tray">
+<!ENTITY mintrayr.minimize.accesskey "M">
+<!ENTITY mintrayr.restore "Restore">
+<!ENTITY mintrayr.restore.accesskey "R">
+<!ENTITY mintrayr.keys.minimize.keycode "VK_F9">
+<!ENTITY mintrayr.keys.minimize.modifiers "">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/newtab.dtd
@@ -0,0 +1,5 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY filterbox.placeholder "Start typing to filter">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/newtab.properties
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+newtab.label=New Conversation
+newtab.logSweepingInProgress=Optimizing conversation suggestions…
+existingConv.infoText=Switch to conversation
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/advanced.dtd
@@ -0,0 +1,85 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- Note: each tab panel must contain unique accesskeys -->
+
+<!ENTITY generalTab.label "General">
+
+<!ENTITY accessibility.label "Accessibility">
+
+<!ENTITY useCursorNavigation.label "Always use the cursor keys to navigate within content of conversations">
+<!ENTITY useCursorNavigation.accesskey "c">
+<!ENTITY searchStartTyping.label "Search for text when I start typing">
+<!ENTITY searchStartTyping.accesskey "x">
+
+<!ENTITY conversations.label "Conversations">
+
+<!ENTITY useAutoScroll.label "Use autoscrolling">
+<!ENTITY useAutoScroll.accesskey "a">
+<!ENTITY useSmoothScrolling.label "Use smooth scrolling">
+<!ENTITY useSmoothScrolling.accesskey "m">
+<!ENTITY checkSpelling.label "Check my spelling as I type">
+<!ENTITY checkSpelling.accesskey "t">
+
+<!ENTITY searchEnginesGroup.label "Search engines">
+<!ENTITY searchEnginesDesc.label "Change options for your search engines">
+<!ENTITY searchEngines.label "Manage Search Engines…">
+<!ENTITY searchEngines.accesskey "S">
+
+<!ENTITY configEditDesc.label "Advanced Configuration">
+<!ENTITY configEdit.label "Config Editor…">
+<!ENTITY configEdit.accesskey "E">
+
+<!ENTITY networkTab.label "Network">
+
+<!ENTITY connection.label "Connection">
+
+<!ENTITY connectionDesc.label "Configure how &brandShortName; connects to the Internet">
+<!ENTITY connectionInfoDesc.label "The two following parts will be merged in a later version.">
+<!ENTITY connectionLibpurpleDesc.label "For libpurple-based accounts">
+<!ENTITY connectionOtherDesc.label "For everything else (updates, addons, …)">
+<!ENTITY connectionSettings.label "Settings…">
+<!ENTITY connectionSettings.accesskey "e">
+<!ENTITY connectionSettings2.accesskey "i">
+
+<!ENTITY updateTab.label "Update">
+
+<!ENTITY autoCheck.label "Automatically check for updates to:">
+<!ENTITY enableAppUpdate.label "&brandShortName;">
+<!ENTITY enableAppUpdate.accesskey "I">
+<!ENTITY enableAddonsUpdate.label "Installed Add-ons">
+<!ENTITY enableAddonsUpdate.accesskey "n">
+<!ENTITY enableSearchUpdate.label "Search Engines">
+<!ENTITY enableSearchUpdate.accesskey "h">
+<!ENTITY whenUpdatesFound.label "When updates to &brandShortName; are found:">
+<!ENTITY askMe.label "Ask me what I want to do">
+<!ENTITY askMe.accesskey "k">
+<!ENTITY modeAutomatic.label "Automatically download and install the update">
+<!ENTITY modeAutomatic.accesskey "d">
+<!ENTITY modeAutoAddonWarn.label "Warn me if this will disable any of my add-ons">
+<!ENTITY modeAutoAddonWarn.accesskey "W">
+<!ENTITY updateHistory.label "Show Update History">
+<!ENTITY updateHistory.accesskey "p">
+
+<!ENTITY encryptionTab.label "Encryption">
+
+<!ENTITY protocols.label "Protocols">
+<!ENTITY useSSL3.label "Use SSL 3.0">
+<!ENTITY useSSL3.accesskey "3">
+<!ENTITY useTLS1.label "Use TLS 1.0">
+<!ENTITY useTLS1.accesskey "1">
+<!ENTITY certificates.label "Certificates">
+<!ENTITY certSelection.description "When a server requests my personal certificate:">
+<!ENTITY certs.auto "Select one automatically">
+<!ENTITY certs.auto.accesskey "l">
+<!ENTITY certs.ask "Ask me every time">
+<!ENTITY certs.ask.accesskey "i">
+<!ENTITY viewCerts.label "View Certificates">
+<!ENTITY viewCerts.accesskey "s">
+<!ENTITY viewCRLs.label "Revocation Lists">
+<!ENTITY viewCRLs.accesskey "R">
+<!ENTITY verify2.label "Validation">
+<!ENTITY verify2.accesskey "V">
+<!ENTITY viewSecurityDevices.label "Security Devices">
+<!ENTITY viewSecurityDevices.accesskey "y">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/applicationManager.dtd
@@ -0,0 +1,8 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY appManager.title "Application details">
+<!ENTITY appManager.style "width: 30em; min-height: 20em;">
+<!ENTITY remove.label "Remove">
+<!ENTITY remove.accesskey "R">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/applicationManager.properties
@@ -0,0 +1,14 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE
+# in descriptionApplications, %S will be replaced by one of the 3 following strings
+descriptionApplications=The following applications can be used to handle %S.
+
+handleProtocol=%S links
+handleWebFeeds=Web Feeds
+handleFile=%S content
+
+descriptionWebApp=This web application is hosted at:
+descriptionLocalApp=This application is located at:
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/applications.dtd
@@ -0,0 +1,14 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY typeColumn.label "Content Type">
+<!ENTITY typeColumn.accesskey "T">
+
+<!ENTITY actionColumn2.label "Action">
+<!ENTITY actionColumn2.accesskey "A">
+
+<!ENTITY focusSearch1.key "f">
+<!ENTITY focusSearch2.key "k">
+
+<!ENTITY filter.emptytext "Search">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/colors.dtd
@@ -0,0 +1,21 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY colorsDialog.title "Colors">
+<!ENTITY window.width "38em">
+<!ENTITY window.macWidth "41em">
+
+<!ENTITY color "Text and Background">
+<!ENTITY textColor.label "Text:">
+<!ENTITY textColor.accesskey "t">
+<!ENTITY backgroundColor.label "Background:">
+<!ENTITY backgroundColor.accesskey "b">
+<!ENTITY useSystemColors.label "Use system colors">
+<!ENTITY useSystemColors.accesskey "s">
+
+<!ENTITY underlineLinks.label "Underline links">
+<!ENTITY underlineLinks.accesskey "u">
+<!ENTITY links "Link Colors">
+<!ENTITY linkColor.label "Links:">
+<!ENTITY linkColor.accesskey "l">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/connection.dtd
@@ -0,0 +1,48 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+<!ENTITY connectionsDialog.title "Connection Settings">
+<!ENTITY window.width "37em">
+<!ENTITY window.macWidth "39em">
+
+<!ENTITY proxyTitle.label "Configure Proxies to Access the Internet">
+<!ENTITY noProxyTypeRadio.label "No proxy">
+<!ENTITY noProxyTypeRadio.accesskey "y">
+<!ENTITY systemTypeRadio.label "Use system proxy settings">
+<!ENTITY systemTypeRadio.accesskey "u">
+<!ENTITY WPADTypeRadio.label "Auto-detect proxy settings for this network">
+<!ENTITY WPADTypeRadio.accesskey "w">
+<!ENTITY manualTypeRadio.label "Manual proxy configuration:">
+<!ENTITY manualTypeRadio.accesskey "m">
+<!ENTITY autoTypeRadio.label "Automatic proxy configuration URL:">
+<!ENTITY autoTypeRadio.accesskey "A">
+<!ENTITY reload.label "Reload">
+<!ENTITY reload.accesskey "e">
+<!ENTITY ftp.label "FTP Proxy:">
+<!ENTITY ftp.accesskey "F">
+<!ENTITY gopher.label "Gopher Proxy:">
+<!ENTITY gopher.accesskey "G">
+<!ENTITY http.label "HTTP Proxy:">
+<!ENTITY http.accesskey "x">
+<!ENTITY ssl.label "SSL Proxy:">
+<!ENTITY ssl.accesskey "L">
+<!ENTITY socks.label "SOCKS Host:">
+<!ENTITY socks.accesskey "C">
+<!ENTITY socks4.label "SOCKS v4">
+<!ENTITY socks4.accesskey "K">
+<!ENTITY socks5.label "SOCKS v5">
+<!ENTITY socks5.accesskey "v">
+<!ENTITY port.label "Port:">
+<!ENTITY HTTPport.accesskey "P">
+<!ENTITY SSLport.accesskey "o">
+<!ENTITY FTPport.accesskey "r">
+<!-- No accesskey for gopher (':' doesn't go well) - mpt's going to redesign the window -->
+<!ENTITY gopherPort.accesskey "">
+<!ENTITY SOCKSport.accesskey "t">
+<!ENTITY noproxy.label "No Proxy for:">
+<!ENTITY noproxy.accesskey "n">
+<!ENTITY noproxyExplain.label "Example: .mozilla.org, .net.nz, 192.168.1.0/24">
+<!ENTITY shareproxy.label "Use this proxy server for all protocols">
+<!ENTITY shareproxy.accesskey "s">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/content.dtd
@@ -0,0 +1,26 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY formattings.label "Formattings">
+
+<!ENTITY fontsAndColors.label "Fonts & Colors">
+
+<!ENTITY filterLevel.label "Display formattings of incoming messages:">
+<!ENTITY filterLevel.accesskey "f">
+<!ENTITY filterLevelNone "none">
+<!ENTITY filterLevelBasic "only basic formattings (bold, italic, underline)">
+<!ENTITY filterLevelAll "all (font, colors, …)">
+
+<!ENTITY defaultFont.label "Default font:">
+<!ENTITY defaultFont.accesskey "D">
+<!ENTITY defaultSize.label "Size:">
+<!ENTITY defaultSize.accesskey "S">
+<!ENTITY defaultColor.label "Default Color:">
+<!ENTITY defaultColor.accesskey "C">
+
+<!ENTITY advancedColors.label "Advanced…">
+<!ENTITY advancedColors.accesskey "A">
+
+<!ENTITY formatOutgoingMessages.label "Send these fonts and colors as part of my messages when possible">
+<!ENTITY formatOutgoingMessages.accesskey "m">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/main.dtd
@@ -0,0 +1,47 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY startup.label "Startup">
+<!ENTITY startupAction.label "When &brandShortName; starts:">
+<!ENTITY startupAction.accesskey "s">
+<!ENTITY startupOffline.label "Open the Account manager">
+<!ENTITY startupConnectAuto.label "Connect my accounts automatically">
+
+<!ENTITY accountsMgr.label "Accounts">
+<!ENTITY manageAccountsDescWin.label "Change options for your accounts">
+<!ENTITY manageAccountsDescUnix2.label "Change preferences for your accounts">
+<!ENTITY manageAccounts.label "Manage Accounts…">
+<!ENTITY manageAccounts.accesskey "A">
+
+<!ENTITY newMessage.label "When receiving a new message">
+<!ENTITY getAttention.label "Flash the taskbar item">
+<!ENTITY getAttention.accesskey "F">
+<!ENTITY getAttentionMac.label "Animate dock icon">
+<!ENTITY getAttentionMac.accesskey "d">
+<!ENTITY unreadCountInDock.label "Show unread message count in a dock badge">
+<!ENTITY unreadCountInDock.accesskey "u">
+<!ENTITY notifyOfNewMessages.label "Notify of messages received in inactive windows">
+<!ENTITY notifyOfNewMessages.accesskey "N">
+
+<!ENTITY sounds.label "Sounds">
+<!ENTITY playSoundsMessage.label "Play sounds on messaging events">
+<!ENTITY playSoundsMessage.accesskey "P">
+<!ENTITY playSoundsBlist.label "Play sounds on buddy list events">
+<!ENTITY playSoundsBlist.accesskey "b">
+
+<!ENTITY systray.label "System Tray Icon">
+<!ENTITY alwaysShowTrayIcon.label "Always show the system tray icon">
+<!ENTITY alwaysShowTrayIcon.accesskey "i">
+<!ENTITY minimizeToTray.label "Minimize Contacts window to Tray:">
+<!ENTITY minimizeToTray.accesskey "t">
+<!ENTITY minimizeOn.never.label "Never (only from the menu)">
+<!ENTITY minimizeOn.minimize.label "When Minimizing">
+<!ENTITY minimizeOn.close.label "Instead of Closing">
+<!ENTITY minimizeOn.both.label "Instead of Closing and when Minimizing">
+
+<!ENTITY addonsMgr.label "Add-ons">
+<!ENTITY manageAddonsDescWin.label "Change options for your add-ons">
+<!ENTITY manageAddonsDescUnix2.label "Change preferences for your add-ons">
+<!ENTITY manageAddons.label "Manage Add-ons…">
+<!ENTITY manageAddons.accesskey "M">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/preferences.dtd
@@ -0,0 +1,20 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+
+<!ENTITY prefWindow.titleWin "Options">
+<!ENTITY prefWindow.titleGNOME "&brandShortName; Preferences">
+<!-- When making changes to prefWindow.styleWin test both Windows Classic and
+ Luna since widget heights are different based on the OS theme -->
+<!ENTITY prefWinMinSize.styleWin2 "width: 42em; min-height: 37.5em;">
+<!ENTITY prefWinMinSize.styleMac "width: 47em; min-height: 40em;">
+<!ENTITY prefWinMinSize.styleGNOME "width: 45.5em; min-height: 40.5em;">
+
+<!ENTITY paneGeneral.title "General">
+<!ENTITY paneTabs.title "Tabs">
+<!ENTITY paneContent.title "Content">
+<!ENTITY paneApplications.title "Applications">
+<!ENTITY panePrivacy.title "Privacy">
+<!ENTITY paneThemes.title "Themes">
+<!ENTITY paneAdvanced.title "Advanced">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/preferences.properties
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#### Applications
+
+fileEnding=%S file
+saveFile=Save File
+
+# LOCALIZATION NOTE (useApp, useDefault): %S = Application name
+useApp=Use %S
+useDefault=Use %S (default)
+
+useOtherApp=Use other…
+fpTitleChooseApp=Select Helper Application
+manageApp=Application Details…
+alwaysAsk=Always ask
+
+# LOCALIZATION NOTE (typeDescriptionWithType):
+# %1$S = type description (for example "Portable Document Format")
+# %2$S = type (for example "application/pdf")
+typeDescriptionWithType=%S (%S)
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/privacy.dtd
@@ -0,0 +1,36 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY status.label "Status">
+
+<!ENTITY sendTyping.label "Send typing notifications in conversations">
+<!ENTITY sendTyping.accesskey "t">
+
+<!ENTITY reportIdleAfter.label "Let my contacts know that I am Idle after">
+<!ENTITY reportIdleAfter.accesskey "I">
+<!ENTITY idleTime "minutes of inactivity">
+
+<!ENTITY andSetStatusToAway.label "and set my status to Away with this status message:">
+<!ENTITY andSetStatusToAway.accesskey "A">
+
+<!ENTITY logsGroup.label "Records">
+
+<!ENTITY logConversations.label "Keep records of my conversations">
+<!ENTITY logConversations.accesskey "r">
+<!ENTITY logSystem.label "Record connections, disconnections and status changes">
+<!ENTITY logSystem.accesskey "c">
+<!ENTITY logShowFolder.description "Open the folder containing the record files">
+<!ENTITY logShowFolderButton.label "Show Log Folder…">
+<!ENTITY logShowFolderButton.accesskey "L">
+
+<!-- Passwords, see mail/chrome/messenger/preferences/security.dtd -->
+<!ENTITY passwords.label "Passwords">
+<!ENTITY savedPasswords.intro "&brandShortName; can remember passwords for all of your accounts.">
+<!ENTITY useMasterPassword.label "Use a master password">
+<!ENTITY useMasterPassword.accesskey "U">
+<!ENTITY masterPassword.intro "A Master Password protects all your passwords, but you must enter it once per session.">
+<!ENTITY changeMasterPassword.label "Change Master Password…">
+<!ENTITY changeMasterPassword.accesskey "C">
+<!ENTITY savedPasswords.label "Saved Passwords…">
+<!ENTITY savedPasswords.accesskey "S">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/tabs.dtd
@@ -0,0 +1,15 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY enableTabbedConversations.label "Enable tabbed conversations">
+<!ENTITY enableTabbedConversations.accesskey "t">
+
+<!ENTITY groupMUCsInSeparateWindow.label "Group Multi-User Chats in a separate window">
+<!ENTITY groupMUCsInSeparateWindow.accesskey "G">
+
+<!ENTITY showTabBar.label "Always show the tab bar">
+<!ENTITY showTabBar.accesskey "b">
+
+<!ENTITY warnCloseMultipleTabs.label "Warn me when closing multiple tabs if there are unread messages">
+<!ENTITY warnCloseMultipleTabs.accesskey "m">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/themes.dtd
@@ -0,0 +1,32 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY messageStyleTab.title "Message Styles">
+<!ENTITY messageStylePreview.label "Preview:">
+<!ENTITY messageStyleTheme.label "Theme:">
+<!ENTITY messageStyleTheme.accesskey "T">
+<!ENTITY messageStyleBubblesTheme.label "Bubbles">
+<!ENTITY messageStyleDarkTheme.label "Dark">
+<!ENTITY messageStylePaperSheetsTheme.label "Paper Sheets">
+<!ENTITY messageStyleSimpleTheme.label "Simple">
+<!ENTITY messageStyleDefaultTheme.label "Default">
+<!ENTITY messageStyleVariant.label "Variant:">
+<!ENTITY messageStyleVariant.accesskey "V">
+<!ENTITY messageStyleShowHeader.label "Show Header">
+<!ENTITY messageStyleShowHeader.accesskey "H">
+<!ENTITY messageStyleNoPreview.title "No preview available">
+<!ENTITY messageStyleNoPreview.description "This theme is not valid or is currently unavailable (disabled addon, safe-mode, …).">
+<!ENTITY messageStyleGetMore.label "Get more message styles…">
+<!ENTITY messageStyleNoExtraThemes.label "(no extra themes installed)">
+
+<!ENTITY emoticonsTab.title "Emoticons">
+<!ENTITY emoticonsTheme.label "Emoticon Theme:">
+<!ENTITY emoticonsTheme.accesskey "E">
+<!ENTITY emoticonsDefaultTheme.label "Default">
+<!ENTITY emoticonsDisabled.label "Disabled">
+<!ENTITY emoticonsPreview.description "These text codes are shown as emoticons in your conversations:">
+<!ENTITY emoticonsImageColumn.label "Emoticon">
+<!ENTITY emoticonsTextCodesColumn.label "Text Codes">
+<!ENTITY emoticonsGetMore.label "Get more emoticons…">
+<!ENTITY emoticonsNoExtraThemes.label "(no extra themes installed)">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/preferences/themes.properties
@@ -0,0 +1,18 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Labels for disabled or incompatible themes in the dropdown boxes
+# Used for both the message style themes and emoticon themes
+disabled=(disabled)
+incompatible=(incompatible)
+
+# Content of preview conversation for message styles
+default=Default
+nick1=Florian
+buddy1=florian@im.instantbird.org
+nick2=Dan
+buddy2=dan@im.instantbird.org
+message1=Hi! :-)
+message2=What's up?
+message3=I'm trying Instantbird! ;-)
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/proxies.dtd
@@ -0,0 +1,22 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY proxiesDialog.title "Proxy Settings">
+<!ENTITY proxiesDialogHeader.title "Proxy Settings">
+<!ENTITY proxiesDialogHeader.description "For this account">
+<!ENTITY proxiesDialog.useGlobalSettings "Use Global Settings">
+<!ENTITY proxiesDialog.directConnection "Direct Connection to the Internet">
+<!ENTITY proxiesDialog.noProxy "(No Proxy)">
+<!ENTITY proxiesDialog.useEnvironment "Use Environment Settings">
+<!ENTITY proxiesDialog.noProxyInEnvironment "No proxy settings found in the environment">
+<!ENTITY proxiesDialog.otherSetting "Other…">
+<!ENTITY proxiesDialog.http.label "HTTP">
+<!ENTITY proxiesDialog.socks4.label "SOCKS 4">
+<!ENTITY proxiesDialog.socks5.label "SOCKS 5">
+<!ENTITY proxiesDialog.hostname.label "Hostname:">
+<!ENTITY proxiesDialog.hostname.defaultValue "Hostname">
+<!ENTITY proxiesDialog.port.label "Port:">
+<!ENTITY proxiesDialog.username.label "Username:">
+<!ENTITY proxiesDialog.password.label "Password:">
+<!ENTITY proxiesDialog.useAsGlobal.label "Use these Settings for All Accounts (Change Global Settings)">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/proxies.properties
@@ -0,0 +1,17 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+proxies.directConnection=Direct Connection to the Internet (No\u00A0Proxy)
+proxies.useEnvironment=Use Environment Settings
+proxies.http=HTTP
+proxies.socks4=SOCKS 4
+proxies.socks5=SOCKS 5
+
+proxies.alert.invalidInput.title=Invalid input
+proxies.alert.invalidInput.message=You need to enter at least a valid hostname and port number to add a new proxy.
+proxies.confirm.passwordUpdate.title=Update Proxy Password?
+proxies.confirm.passwordUpdate.message=The same proxy already exists with a different password. Update the password?
+
+proxies.username.string=Username: %S
+proxies.port.string=Port: %S
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/prpl.properties
@@ -0,0 +1,65 @@
+protoOptions=%S Options
+
+prpl-aim.server=Server
+prpl-aim.port=Port
+prpl-aim.always_use_rv_proxy=Always use AIM/ICQ proxy server for file transfers and direct IM (slower, but does not reveal your IP address)
+
+prpl-gg.nick=Nickname
+
+prpl-novell.server=Server address
+prpl-novell.port=Server port
+
+prpl-icq.server=Server
+prpl-icq.port=Port
+prpl-icq.always_use_rv_proxy=Always use AIM/ICQ proxy server for file transfers and direct IM (slower, but does not reveal your IP address)
+prpl-icq.encoding=Encoding
+
+prpl-irc.port=Port
+prpl-irc.encoding=Encodings
+prpl-irc.username=Username
+prpl-irc.realname=Real name
+prpl-irc.ssl=Use SSL
+
+prpl-msn.server=Server
+prpl-msn.port=Port
+prpl-msn.http_method=Use HTTP Method
+prpl-msn.http_method_server=HTTP Method Server
+prpl-msn.custom_smileys=Show custom smileys
+
+prpl-myspace.server=Connect server
+prpl-myspace.port=Connect port
+
+prpl-bilboed-netsoul.server=Server
+prpl-bilboed-netsoul.port=Port
+prpl-bilboed-netsoul.location=Location
+prpl-bilboed-netsoul.comment=Comment
+
+prpl-qq.use_tcp=Connect using TCP
+prpl-qq.server=Server
+prpl-qq.port=Port
+
+prpl-simple.dopublish=Publish status (note: everyone may watch you)
+prpl-simple.port=Connect port
+prpl-simple.udp=Use UDP
+prpl-simple.useproxy=Use proxy
+prpl-simple.proxy=Proxy
+prpl-simple.authuser=Auth User
+prpl-simple.authdomain=Auth Domain
+
+prpl-jabber.require_tls=Require SSL/TLS
+prpl-jabber.old_ssl=Force old (port 5223) SSL
+prpl-jabber.auth_plain_in_clear=Allow plaintext auth over unencrypted streams
+prpl-jabber.port=Connect port
+prpl-jabber.connect_server=Connect server
+prpl-jabber.ft_proxies=File transfer proxies
+
+prpl-yahoo.yahoojp=Yahoo Japan
+prpl-yahoo.server=Pager server
+prpl-yahoo.serverjp=Japan Pager server
+prpl-yahoo.port=Pager port
+prpl-yahoo.xfer_host=File transfer server
+prpl-yahoo.xferjp_host=Japan file transfer server
+prpl-yahoo.xfer_port=File transfer port
+prpl-yahoo.room_list_locale=Chat room locale
+prpl-yahoo.ignore_invites=Ignore conference and chatroom invitations
+prpl-yahoo.local_charset=Encoding
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/quitDialog.properties
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+dialogTitle=Unread message(s)
+message=You have unread message(s) in #1 conversation, do you really want to continue?;You have unread messages in #1 conversations, do you really want to continue?
+checkbox=Do ¬ ask next time
+quitButton=&Quit
+restartButton=&Restart
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/region.properties
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Search engine order (order displayed in the search bar dropdown)s
+browser.search.order.1=Google
+browser.search.order.2=Yahoo
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/tabbrowser.dtd
@@ -0,0 +1,15 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY untitledTab "(Untitled)">
+<!ENTITY newTab.label "New Tab">
+<!ENTITY newTab.accesskey "N">
+<!ENTITY closeTab.label "Close Tab">
+<!ENTITY closeTab.accesskey "c">
+<!ENTITY closeOtherTabs.accesskey "o">
+<!ENTITY closeOtherTabs.label "Close Other Tabs">
+<!ENTITY openTabInNewWindow.label "Open in a New Window">
+<!ENTITY openTabInNewWindow.accesskey "W">
+<!ENTITY listAllTabs.label "List all tabs">
+<!ENTITY newTabButton.tooltip "Open a new tab">
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/tabbrowser.properties
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+tabs.closeWarningTitle=Confirm close
+tabs.closeWarningMessage=You are about to close #1 conversation with unread messages. Are you sure you want to continue?;You are about to close #1 conversations with unread messages. Are you sure you want to continue?
+tabs.closeButton=Close conversation;Close conversations
+tabs.closeWarningPromptMe=Warn me when I attempt to close multiple conversations with unread messages
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/updates.properties
@@ -0,0 +1,21 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Check for Updates
+# LOCALIZATION NOTE (updatesItem_*): these are alternative labels for Check for Update item in Help menu.
+# Which one is used depends on Update process state.
+# This is copied from mozilla/browser/locales/en-US/chrome/browser/browser.properties
+
+updatesItem_default=Check for Updates…
+updatesItem_defaultFallback=Check for Updates…
+updatesItem_default.accesskey=C
+updatesItem_downloading=Downloading %S…
+updatesItem_downloadingFallback=Downloading Update…
+updatesItem_downloading.accesskey=D
+updatesItem_resume=Resume Downloading %S…
+updatesItem_resumeFallback=Resume Downloading Update…
+updatesItem_resume.accesskey=D
+updatesItem_pending=Apply Downloaded Update Now…
+updatesItem_pendingFallback=Apply Downloaded Update Now…
+updatesItem_pending.accesskey=D
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/chrome/instantbird/winjumplist.properties
@@ -0,0 +1,18 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# NOTE: this file is no longer used and will be removed post-0.3
+# release, thus it does not actually need to be translated (see bug 841).
+
+# LOCALIZATION NOTE:
+# These are the labels that show up for the Jump List items.
+available.label=Available
+away.label=Away
+offline.label=Offline
+
+# LOCALIZATION NOTE:
+# These are descriptions of what each Jump List item will do.
+available.tooltip=Set status to available.
+away.tooltip=Set status to away.
+offline.tooltip=Set status to offline.
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/defines.inc
@@ -0,0 +1,9 @@
+#filter emptyLines
+
+#define MOZ_LANGPACK_CREATOR instantbird.org
+
+# If non-English locales wish to credit multiple contributors, uncomment this
+# variable definition and use the format specified.
+# #define MOZ_LANGPACK_CONTRIBUTORS <em:contributor>Joe Solon</em:contributor> <em:contributor>Suzy Solon</em:contributor>
+
+#unfilter emptyLines
new file mode 100755
--- /dev/null
+++ b/im/locales/en-US/installer/custom.properties
@@ -0,0 +1,82 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE:
+
+# This file must be saved as UTF8
+
+# Accesskeys are defined by prefixing the letter that is to be used for the
+# accesskey with an ampersand (e.g. &).
+
+# Do not replace $BrandShortName, $BrandFullName, or $BrandFullNameDA with a
+# custom string and always use the same one as used by the en-US files.
+# $BrandFullNameDA allows the string to contain an ampersand (e.g. DA stands
+# for double ampersand) and prevents the letter following the ampersand from
+# being used as an accesskey.
+
+# You can use \n to create a newline in the string but only when the string
+# from en-US contains a \n.
+
+REG_APP_DESC=$BrandShortName is an easy to use instant messaging application. It connects to all the famous IM networks.
+CONTEXT_OPTIONS=$BrandShortName &Options
+CONTEXT_SAFE_MODE=$BrandShortName &Safe Mode
+SAFE_MODE=Safe Mode
+OPTIONS_PAGE_TITLE=Setup Type
+OPTIONS_PAGE_SUBTITLE=Choose setup options
+OPTIONS_MAKE_DEFAULT=&Use $BrandShortName as my default instant messaging client
+SHORTCUTS_PAGE_TITLE=Set Up Shortcuts
+SHORTCUTS_PAGE_SUBTITLE=Create Program Icons
+SUMMARY_PAGE_TITLE=Summary
+SUMMARY_PAGE_SUBTITLE=Ready to start installing $BrandShortName
+SUMMARY_INSTALLED_TO=$BrandShortName will be installed to the following location:
+SUMMARY_REBOOT_REQUIRED_INSTALL=A restart of your computer may be required to complete the installation.
+SUMMARY_REBOOT_REQUIRED_UNINSTALL=A restart of your computer may be required to complete the uninstall.
+SUMMARY_INSTALL_CLICK=Click Install to continue.
+SUMMARY_UPGRADE_CLICK=Click Upgrade to continue.
+SURVEY_TEXT=&Tell us what you thought of $BrandShortName
+LAUNCH_TEXT=&Launch $BrandShortName now
+CREATE_ICONS_DESC=Create icons for $BrandShortName:
+ICONS_DESKTOP=On my &Desktop
+ICONS_STARTMENU=In my &Start Menu Programs folder
+ICONS_QUICKLAUNCH=In my &Quick Launch bar
+WARN_MANUALLY_CLOSE_APP_INSTALL=$BrandShortName must be closed to proceed with the installation.\n\nPlease close $BrandShortName to continue.
+WARN_MANUALLY_CLOSE_APP_UNINSTALL=$BrandShortName must be closed to proceed with the uninstall.\n\nPlease close $BrandShortName to continue.
+WARN_MANUALLY_CLOSE_APP_LAUNCH=$BrandShortName is already running.\n\nPlease close $BrandShortName prior to launching the version you have just installed.
+WARN_WRITE_ACCESS=You don't have access to write to the installation directory.\n\nClick OK to select a different directory.
+WARN_DISK_SPACE=You don't have sufficient disk space to install to this location.\n\nClick OK to select a different location.
+WARN_MIN_SUPPORTED_OS_MSG=Sorry, $BrandShortName can't be installed. This version of $BrandShortName requires ${MinSupportedVer} or newer.
+WARN_RESTART_REQUIRED_UNINSTALL=Your computer must be restarted to complete a previous uninstall of $BrandShortName. Do you want to reboot now?
+WARN_RESTART_REQUIRED_UPGRADE=Your computer must be restarted to complete a previous upgrade of $BrandShortName. Do you want to reboot now?
+ERROR_CREATE_DIRECTORY_PREFIX=Error creating directory:
+ERROR_CREATE_DIRECTORY_SUFFIX=Click Cancel to stop the installation or\nRetry to try again.
+
+UN_CONFIRM_PAGE_TITLE=Uninstall $BrandFullName
+UN_CONFIRM_PAGE_SUBTITLE=Remove $BrandFullName from your computer.
+UN_CONFIRM_UNINSTALLED_FROM=$BrandShortName will be uninstalled from the following location:
+UN_CONFIRM_CLICK=Click Uninstall to continue.
+UN_REMOVE_PROFILES=&Remove my $BrandShortName personal data and customizations
+UN_REMOVE_PROFILES_DESC=This will permanently remove your bookmarks, saved passwords, cookies and customizations. You may wish to keep this information if you plan on installing another version of $BrandShortName in the future.
+
+BANNER_CHECK_EXISTING=Checking existing installation…
+
+STATUS_INSTALL_APP=Installing $BrandShortName…
+STATUS_INSTALL_LANG=Installing Language Files (${AB_CD})…
+STATUS_UNINSTALL_MAIN=Uninstalling $BrandShortName…
+STATUS_CLEANUP=A Little Housekeeping…
+
+# _DESC strings support approximately 65 characters per line.
+# One line
+OPTIONS_SUMMARY=Choose the type of setup you prefer, then click Next.
+# One line
+OPTION_STANDARD_DESC=$BrandShortName will be installed with the most common options.
+OPTION_STANDARD_RADIO=&Standard
+# Two lines
+OPTION_CUSTOM_DESC=You may choose individual options to be installed. Recommended for experienced users.
+OPTION_CUSTOM_RADIO=&Custom
+
+# LOCALIZATION NOTE:
+# The following text replaces the Install button text on the summary page.
+# Verify that the access key for InstallBtn (in override.properties) and
+# UPGRADE_BUTTON is not already used by SUMMARY_TAKE_DEFAULTS.
+UPGRADE_BUTTON=&Upgrade
new file mode 100755
--- /dev/null
+++ b/im/locales/en-US/installer/mui.properties
@@ -0,0 +1,61 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# To make the l10n tinderboxen see changes to this file you can change a value
+# name by adding - to the end of the name followed by chars (e.g. Branding-2).
+
+# LOCALIZATION NOTE:
+
+# This file must be saved as UTF8
+
+# Accesskeys are defined by prefixing the letter that is to be used for the
+# accesskey with an ampersand (e.g. &).
+
+# Do not replace $BrandShortName, $BrandFullName, or $BrandFullNameDA with a
+# custom string and always use the same one as used by the en-US files.
+# $BrandFullNameDA allows the string to contain an ampersand (e.g. DA stands
+# for double ampersand) and prevents the letter following the ampersand from
+# being used as an accesskey.
+
+# You can use \n to create a newline in the string but only when the string
+# from en-US contains a \n.
+
+MUI_TEXT_WELCOME_INFO_TITLE=Welcome to the $BrandFullNameDA Setup Wizard
+MUI_TEXT_WELCOME_INFO_TEXT=This wizard will guide you through the installation of $BrandFullNameDA.\n\n$_CLICK
+MUI_TEXT_COMPONENTS_TITLE=Choose Components
+MUI_TEXT_COMPONENTS_SUBTITLE=Choose which features of $BrandFullNameDA you want to install.
+MUI_INNERTEXT_COMPONENTS_DESCRIPTION_TITLE=Description
+MUI_INNERTEXT_COMPONENTS_DESCRIPTION_INFO=Position your mouse over a component to see its description.
+MUI_TEXT_DIRECTORY_TITLE=Choose Install Location
+MUI_TEXT_DIRECTORY_SUBTITLE=Choose the folder in which to install $BrandFullNameDA.
+MUI_TEXT_INSTALLING_TITLE=Installing
+MUI_TEXT_INSTALLING_SUBTITLE=Please wait while $BrandFullNameDA is being installed.
+MUI_TEXT_FINISH_TITLE=Installation Complete
+MUI_TEXT_FINISH_SUBTITLE=Setup was completed successfully.
+MUI_TEXT_ABORT_TITLE=Installation Aborted
+MUI_TEXT_ABORT_SUBTITLE=Setup was not completed successfully.
+MUI_BUTTONTEXT_FINISH=&Finish
+MUI_TEXT_FINISH_INFO_TITLE=Completing the $BrandFullNameDA Setup Wizard
+MUI_TEXT_FINISH_INFO_TEXT=$BrandFullNameDA has been installed on your computer.\n\nClick Finish to close this wizard.
+MUI_TEXT_FINISH_INFO_REBOOT=Your computer must be restarted in order to complete the installation of $BrandFullNameDA. Do you want to reboot now?
+MUI_TEXT_FINISH_REBOOTNOW=Reboot now
+MUI_TEXT_FINISH_REBOOTLATER=I want to manually reboot later
+MUI_TEXT_STARTMENU_TITLE=Choose Start Menu Folder
+MUI_TEXT_STARTMENU_SUBTITLE=Choose a Start Menu folder for the $BrandFullNameDA shortcuts.
+MUI_INNERTEXT_STARTMENU_TOP=Select the Start Menu folder in which you would like to create the program's shortcuts. You can also enter a name to create a new folder.
+MUI_TEXT_ABORTWARNING=Are you sure you want to quit $BrandFullName Setup?
+MUI_UNTEXT_WELCOME_INFO_TITLE=Welcome to the $BrandFullNameDA Uninstall Wizard
+MUI_UNTEXT_WELCOME_INFO_TEXT=This wizard will guide you through the uninstallation of $BrandFullNameDA.\n\nBefore starting the uninstallation, make sure $BrandFullNameDA is not running.\n\n$_CLICK
+MUI_UNTEXT_CONFIRM_TITLE=Uninstall $BrandFullNameDA
+MUI_UNTEXT_CONFIRM_SUBTITLE=Remove $BrandFullNameDA from your computer.
+MUI_UNTEXT_UNINSTALLING_TITLE=Uninstalling
+MUI_UNTEXT_UNINSTALLING_SUBTITLE=Please wait while $BrandFullNameDA is being uninstalled.
+MUI_UNTEXT_FINISH_TITLE=Uninstallation Complete
+MUI_UNTEXT_FINISH_SUBTITLE=Uninstall was completed successfully.
+MUI_UNTEXT_ABORT_TITLE=Uninstallation Aborted
+MUI_UNTEXT_ABORT_SUBTITLE=Uninstall was not completed successfully.
+MUI_UNTEXT_FINISH_INFO_TITLE=Completing the $BrandFullNameDA Uninstall Wizard
+MUI_UNTEXT_FINISH_INFO_TEXT=$BrandFullNameDA has been uninstalled from your computer.\n\nClick Finish to close this wizard.
+MUI_UNTEXT_FINISH_INFO_REBOOT=Your computer must be restarted in order to complete the uninstallation of $BrandFullNameDA. Do you want to reboot now?
+MUI_UNTEXT_ABORTWARNING=Are you sure you want to quit $BrandFullName Uninstall?
new file mode 100755
--- /dev/null
+++ b/im/locales/en-US/installer/override.properties
@@ -0,0 +1,86 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE:
+
+# This file must be saved as UTF8
+
+# Accesskeys are defined by prefixing the letter that is to be used for the
+# accesskey with an ampersand (e.g. &).
+
+# Do not replace $BrandShortName, $BrandFullName, or $BrandFullNameDA with a
+# custom string and always use the same one as used by the en-US files.
+# $BrandFullNameDA allows the string to contain an ampersand (e.g. DA stands
+# for double ampersand) and prevents the letter following the ampersand from
+# being used as an accesskey.
+
+# You can use \n to create a newline in the string but only when the string
+# from en-US contains a \n.
+
+# Strings that require a space at the end should be enclosed with double
+# quotes and the double quotes will be removed. To add quotes to the beginning
+# and end of a string enclose the string with an additional double quote at the
+# beginning and the end of the string (e.g. ""This will include quotes"").
+
+SetupCaption=$BrandFullName Setup
+UninstallCaption=$BrandFullName Uninstall
+BackBtn=< &Back
+NextBtn=&Next >
+AcceptBtn=I &accept the terms in the License Agreement
+DontAcceptBtn=I &do not accept the terms in the License Agreement
+InstallBtn=&Install
+UninstallBtn=&Uninstall
+CancelBtn=Cancel
+CloseBtn=&Close
+BrowseBtn=B&rowse…
+ShowDetailsBtn=Show &details
+ClickNext=Click Next to continue.
+ClickInstall=Click Install to start the installation.
+ClickUninstall=Click Uninstall to start the uninstallation.
+Completed=Completed
+LicenseTextRB=Please review the license agreement before installing $BrandFullNameDA. If you accept all terms of the agreement, select the first option below. $_CLICK
+ComponentsText=Check the components you want to install and uncheck the components you don't want to install. $_CLICK
+ComponentsSubText2_NoInstTypes=Select components to install:
+DirText=Setup will install $BrandFullNameDA in the following folder. To install in a different folder, click Browse and select another folder. $_CLICK
+DirSubText=Destination Folder
+DirBrowseText=Select the folder to install $BrandFullNameDA in:
+SpaceAvailable="Space available: "
+SpaceRequired="Space required: "
+UninstallingText=$BrandFullNameDA will be uninstalled from the following folder. $_CLICK
+UninstallingSubText=Uninstalling from:
+FileError=Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Abort to stop the installation,\r\nRetry to try again, or\r\nIgnore to skip this file.
+FileError_NoIgnore=Error opening file for writing: \r\n\r\n$0\r\n\r\nClick Retry to try again, or\r\nCancel to stop the installation.
+CantWrite="Can't write: "
+CopyFailed=Copy failed
+CopyTo="Copy to "
+Registering="Registering: "
+Unregistering="Unregistering: "
+SymbolNotFound="Could not find symbol: "
+CouldNotLoad="Could not load: "
+CreateFolder="Create folder: "
+CreateShortcut="Create shortcut: "
+CreatedUninstaller="Created uninstaller: "
+Delete="Delete file: "
+DeleteOnReboot="Delete on reboot: "
+ErrorCreatingShortcut="Error creating shortcut: "
+ErrorCreating="Error creating: "
+ErrorDecompressing=Error decompressing data! Corrupted installer?
+ErrorRegistering=Error registering DLL
+ExecShell="ExecShell: "
+Exec="Execute: "
+Extract="Extract: "
+ErrorWriting="Extract: error writing to file "
+InvalidOpcode=Installer corrupted: invalid opcode
+NoOLE="No OLE for: "
+OutputFolder="Output folder: "
+RemoveFolder="Remove folder: "
+RenameOnReboot="Rename on reboot: "
+Rename="Rename: "
+Skipped="Skipped: "
+CopyDetails=Copy Details To Clipboard
+LogInstall=Log install process
+Byte=B
+Kilo=K
+Mega=M
+Giga=G
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/amazondotcom.xml
@@ -0,0 +1,17 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Amazon.com</ShortName>
+<Description>Amazon.com Search</Description>
+<InputEncoding>ISO-8859-1</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHgSURBVHjalFM9TNtQEP4cB7PwM1RITUXIgsRaYEEVEyKZwhiyZAQyd0BhpFOlIjoBqhjSqVQMoVMLLAjEwECCQJkSkBqJYDOAFOMKFSf28d7DTUxiUDnp/Pzeu/vuu7t3ICKF6SLTMv2/lB0fRWKfjwDm4JJisYh0Oo3fpZLYT0SjSCQS8JAFMADNDZ3NZsnf1taiqVTKi4nGASruk5lkkmTmMB6JUKFQqO+DfX1eABWeQoVR6f7HSdM0obqu48Yw8G1tDT82NsRd1TSbU9BbGPCog8PDj+jLzurFoAVgMh4XxoNDQ6SqKi0tL9eBvAB8zZwymYxYY7EYAoEA8vm82BNTg6XUIs0MeGTZoR1mhXSnwNl4pmAbjU7mcjkKhkL1ynMnntZ4OEw3VyrV8utk7s5TdW++0QXz+1i3P7IK36t+PCfVn1OQOoOA0gXr5DPak+cPXbBK+/T3S69AtY3LJ98vZ1or/iLr+pTuvr59/A6s003UdqZFJF/PCKQ3o5CUznoBST2AfbEF/9iqYEDaIfwj73VJPEfgNTe0tWNYR0uwy9uOW0OkrgHI7z5ADo2C7v48nLV3XHKAT+x/1m1sX58xsBxg8rZJrDYD8DHHp4aJj/MK09sXjPOt46PcCzAACXY8/u34wN0AAAAASUVORK5CYII=</Image>
+<Url type="text/html" method="GET" template="http://www.amazon.com/exec/obidos/external-search/">
+ <Param name="field-keywords" value="{searchTerms}"/>
+ <Param name="mode" value="blended"/>
+ <Param name="tag" value="instantbird-20"/>
+ <Param name="sourceid" value="Instantbird-search"/>
+</Url>
+<SearchForm>http://www.amazon.com/</SearchForm>
+</SearchPlugin>
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/answers.xml
@@ -0,0 +1,15 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Answers.com</ShortName>
+<Description>Dictionary Search on Answers.com</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////K////4f////E////5f///+n////P////mv///0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8E////fv///+//////////////////////7NnP/+LFtv/////+////of///xYAAAAAAAAAAAAAAAD///8D////lf////////////j0//bi1v/OlXf/tGU9/6FCEv/OmH3////////////////D////FgAAAAAAAAAA////avPm4P/evaz/8NbI//7r3//23M3/xYRi/5kzAP/Df1z//u/l//749P/v4dn/+PPw/////6j///8B////GP///+W/f1//smM7//bczf/+69///uvf/9ytlP+ZMwD/5se3/+/f1//AgmP/nj0N/927qv/////+////QP///2z/////8NvQ/8WCYP/+69///uvf//7r3/+7ckz/pUkb/9m1ov+ePQ3/okUW/8+fh//38O3//////////5r///+t//////7y6v/Cflv/58Cr//DRwP/mwKv/okQU/8ODYv/cuqj/yZN4//Tq5f/+9e///vDn///////////Q////yf/////+7+b/05yA/65ZLv+9dVD/sF40/5kzAP/kvKb//vTu//Tr5v/7+Pb//vfz//707f//////////6f///8X//////vDm/+K4ov/KjGz//ure/8uNbf+jRBX/+OTX/+3b0v+jSBr/pk0h/717Wv/Wrpr//Pn4/////+b///+i//////7z7f/02Mj/wn5b//vl2P+uWS7/vXhU//v49//48u//1q6a/717Wv+oUSb/tWxH//jz8P/////K////V///////+/j//ure/8aFZP/fs5v/oEAQ/9q1o/+zaEL/1ayX//718P/+9/P/+PHu//jz8P//////////h////wr////O///////38v/YpYr/tGQ7/6ZLHf/06eX/s2dB/549Df/x49z//vDn//7x6f//////////8////yoAAAAA////R/////v/////7dXI/5kzAP+7cUv//vHp/+vYzv+bNwX/vHlY//38/P///////////////30AAAAAAAAAAAAAAAD///9n////+/z5+P++e1n/3LGc//7w5//++PT/0KKL/8OIa//9/Pv//////////5X///8GAAAAAAAAAAAAAAAAAAAAAP///0n////K///////////////////////////+/v7/////5v///2z///8CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Cv///1f///+g////xP///8n///+r////bP///xoAAAAAAAAAAAAAAAAAAAAA+B////AH///AA///wAH//4AB//+AAP//AAD//wAA//8AAP//AAD//4AA//+AAf//wAP//+AD///wD////D///w==</Image>
+<Url type="text/html" method="GET" template="http://www.answers.com/main/ntquery">
+ <Param name="s" value="{searchTerms}"/>
+ <Param name="gwp" value="13"/>
+</Url>
+<SearchForm>http://www.answers.com/</SearchForm>
+</SearchPlugin>
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/creativecommons.xml
@@ -0,0 +1,15 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Creative Commons</ShortName>
+<Description>Find photos, movies, music, and text to rip, sample, mash, and share.</Description>
+<InputEncoding>utf-8</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJUSURBVDiNjZO9S1thGMXPvTfJFbnkipNkLLS0ksFg0M0lf4CboNCEgIIg/RiKtEOn0qGWTtbVoBYcIji10I9J0ApWCjp0kRaXdhHjTW4+uGnur4NJ8GOwZ3nf4TnnfZ5z3scAdBGGYdyVdN+yrGHTNNOtVqsVhuG+pO+S3gE/LtV3BIxzPDJNc8FxHGN0dNRKpVIGoJ2dndr+/r5Vr9cl6bmkN0AoSQIEyHXdj5KYnZ3F932uolKpkM/nK5KQ9FmSCZwLOI7zQBLr6+vXiFdRLBaDtsiTTve3YrFYkM/nbyR3MDU1dSKpLumO+vr6Xruui+d5AFSrVVZWVtjY2KDRaABwdHTE4uIie3t7AJTLZaLRaFXSCyUSid1MJgOA53n09/eTTqdJJpPMzc2xurqKbduMj48Tj8fZ3d0FYHBw8FjSezmOU56fnwdgeXkZ27ap1WpUKhWazSZjY2Nks1kASqVSd4zp6eljSX/MtiHdRDpnEATyfb+bkiSVSqXu3TCM8xgHBga+dkY4OzvDdV2GhoZIJBLMzMxQKBSIRqNkMhlisRhbW1sAJJPJn5I+KB6Pv7poou/7rK2tsbm5SRAEXROXlpY4ODgAoFarYdu2J+llN8ZcLvffMeZyud+SGpLuCVBPT89jSRQKhRvJxWKxISmU9JTOT5Rk9Pb2fpHE5OQkJycn14inp6dMTEx4bdM/SbKAy8sk6WEkElmwLCuSSqUYGRmxgHB7e7t+eHgYazabgaRnkt7SeZnr63xbUtYwjGHTNNNhGP4F9iR9a6/zr4v1/wDE1D9XlC4rrAAAAABJRU5ErkJggg==</Image>
+<Url type="text/html" method="GET" template="http://search.creativecommons.org/">
+ <Param name="q" value="{searchTerms}"/>
+ <Param name="sourceid" value="Instantbird-search"/>
+</Url>
+<SearchForm>http://search.creativecommons.org/</SearchForm>
+</SearchPlugin>
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/eBay.xml
@@ -0,0 +1,14 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>eBay</ShortName>
+<Description>eBay - Online auctions</Description>
+<InputEncoding>ISO-8859-1</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAEACABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAAA/wAAAABAAABAQAAAgEAAAMBAAAD/QAAAAIAAAECAAACAgAAAwIAAAP+AAAAAwAAAQMAAAIDAAADAwAAA/8AAAAD/AABA/wAAgP8AAMD/AAD//wAAAABAAEAAQACAAEAAwABAAP8AQAAAQEAAQEBAAIBAQADAQEAA/0BAAACAQABAgEAAgIBAAMCAQAD/gEAAAMBAAEDAQACAwEAAwMBAAP/AQAAA/0AAQP9AAID/QADA/0AA//9AAAAAgABAAIAAgACAAMAAgAD/AIAAAECAAEBAgACAQIAAwECAAP9AgAAAgIAAQICAAICAgADAgIAA/4CAAADAgABAwIAAgMCAAMDAgAD/wIAAAP+AAED/gACA/4AAwP+AAP//gAAAAMAAQADAAIAAwADAAMAA/wDAAABAwABAQMAAgEDAAMBAwAD/QMAAAIDAAECAwACAgMAAwIDAAP+AwAAAwMAAQMDAAIDAwADAwMAA/8DAAAD/wABA/8AAgP/AAMD/wAD//8AAAAD/AEAA/wCAAP8AwAD/AP8A/wAAQP8AQED/AIBA/wDAQP8A/0D/AACA/wBAgP8AgID/AMCA/wD/gP8AAMD/AEDA/wCAwP8AwMD/AP/A/wAA//8AQP//AID//wDA//8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8fHx8fHx8fHx8fHx8AAB8cGRkUFAcHBx8fBUKfAAAfFBkfHxNHF4cb29vCnwAAHxkZFBQUBx8HG98bwp8fAB8ZGR8UGQcXhxvb28KFXx8fHZkZGRNHBwcfG8jCgoQfAB8fHx8HBx8b29vCnwPCnwAAAB8fBwcfHx8EBB8Dwp8AAAAAHx8fHwAfHx8AHx8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAP//AACAAwAAAAMAAAADAAAAAQAAAAAAAAAAAACAAAAA4AAAAPCIAAD//wAA//8AAP//AAA=</Image>
+<Url type="text/html" method="GET" template="http://rover.ebay.com/rover/1/711-47294-18009-3/4">
+ <Param name="satitle" value="{searchTerms}"/>
+</Url>
+<SearchForm>http://search.ebay.com/</SearchForm>
+</SearchPlugin>
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/google.xml
@@ -0,0 +1,17 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Google</ShortName>
+<Description>Google Search</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image>
+<Url type="text/html" method="GET" template="http://www.google.com/search">
+ <Param name="q" value="{searchTerms}"/>
+ <Param name="ie" value="utf-8"/>
+ <Param name="oe" value="utf-8"/>
+ <Param name="aq" value="t"/>
+</Url>
+<SearchForm>http://www.google.com/</SearchForm>
+</SearchPlugin>
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/list.txt
@@ -0,0 +1,7 @@
+amazondotcom
+answers
+creativecommons
+eBay
+google
+wikipedia
+yahoo
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/wikipedia.xml
@@ -0,0 +1,15 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Wikipedia (en)</ShortName>
+<Description>Wikipedia, the free encyclopedia</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9%2FAAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiIgzuIV4iIiIhndo53KIiIiB%2FWvXoYiIiIfEZfWBSIiIEGi%2FfoqoiIgzuL84i9iIjpGIoMiEHoiMkos3FojmiLlUipYliEWIF%2BiDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</Image>
+<Url type="text/html" method="GET" template="http://en.wikipedia.org/wiki/Special:Search">
+ <Param name="search" value="{searchTerms}"/>
+ <Param name="sourceid" value="Instantbird-search"/>
+</Url>
+<SearchForm>http://en.wikipedia.org/wiki/Special:Search</SearchForm>
+</SearchPlugin>
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/searchplugins/yahoo.xml
@@ -0,0 +1,16 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Yahoo</ShortName>
+<Description>Yahoo Search</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Image width="16" height="16">data:image/x-icon;base64,R0lGODlhEAAQAJECAP8AAAAAAP///wAAACH5BAEAAAIALAAAAAAQABAAAAIplI+py+0NogQuyBDEnEd2kHkfFWUamEzmpZSfmaIHPHrRguUm/fT+UwAAOw==</Image>
+<Url type="text/html" method="GET" template="http://search.yahoo.com/search">
+ <Param name="p" value="{searchTerms}"/>
+ <Param name="ei" value="UTF-8"/>
+ <MozParam name="fr" condition="pref" pref="yahoo-fr" />
+</Url>
+<SearchForm>http://search.yahoo.com/</SearchForm>
+</SearchPlugin>
new file mode 100644
--- /dev/null
+++ b/im/locales/en-US/updater/updater.ini
@@ -0,0 +1,8 @@
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0. If a copy of the MPL was not distributed with this
+; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+; This file is in the UTF-8 encoding
+[Strings]
+Title=Software Update
+Info=Instantbird is installing your updates and will start in a few moments…
new file mode 100755
--- /dev/null
+++ b/im/locales/filter.py
@@ -0,0 +1,35 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+def test(mod, path, entity = None):
+ import re
+ # ignore anything but Instantbird
+ if mod not in ("netwerk", "dom", "toolkit", "security/manager",
+ "instantbird", "chat", "purple", "extensions/reporter", "extensions/spellcheck",
+ "instantbird/branding/release", "instantbird/branding/nightly"):
+ return False
+ if mod == "instantbird" and path.startswith("branding/"):
+ return False
+ if mod != "instantbird" and mod != "extensions/spellcheck":
+ # we only have exceptions for instantbird and extensions/spellcheck
+ return True
+ if not entity:
+ if mod == "extensions/spellcheck":
+ return False
+ # instantbird
+ return not (re.match(r"searchplugins\/.+\.xml", path))
+ if mod == "extensions/spellcheck":
+ # l10n ships en-US dictionary or something, do compare
+ return True
+ if path == "defines.inc":
+ return entity != "MOZ_LANGPACK_CONTRIBUTORS"
+
+ if path == "chrome/instantbird/accountWizard.properties":
+ return not (re.match(r"topProtocol\.[^\.]+\.description", entity))
+
+ if path != "chrome/instantbird/region.properties":
+ # only region.properties exceptions remain, compare all others
+ return True
+
+ return not (re.match(r"browser\.search\.order\.[1-9]", entity))
new file mode 100644
--- /dev/null
+++ b/im/locales/generic/install.rdf
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#filter substitution
+-->
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+ <Description about="urn:mozilla:install-manifest"
+ em:id="@MOZ_LANGPACK_EID@"
+ em:name="@MOZ_LANG_TITLE@ Language Pack"
+ em:version="@MOZ_APP_VERSION@"
+ em:type="8"
+ em:creator="@MOZ_LANGPACK_CREATOR@">
+#ifdef MOZ_LANGPACK_CONTRIBUTORS
+ @MOZ_LANGPACK_CONTRIBUTORS@
+#endif
+ <em:targetApplication>
+ <Description>
+ <em:id>{33cb9019-c295-46dd-be21-8c4936574bee}</em:id>
+ <em:minVersion>@MOZ_APP_VERSION@</em:minVersion>
+ <em:maxVersion>@MOZ_APP_VERSION@</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+ </Description>
+</RDF>
new file mode 100644
--- /dev/null
+++ b/im/locales/jar.mn
@@ -0,0 +1,50 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+@AB_CD@.jar:
+% locale instantbird @AB_CD@ %locale/@AB_CD@/instantbird/
+ locale/@AB_CD@/instantbird/aboutDialog.dtd (%chrome/instantbird/aboutDialog.dtd)
+ locale/@AB_CD@/instantbird/account.dtd (%chrome/instantbird/account.dtd)
+ locale/@AB_CD@/instantbird/accounts.dtd (%chrome/instantbird/accounts.dtd)
+ locale/@AB_CD@/instantbird/accounts.properties (%chrome/instantbird/accounts.properties)
+ locale/@AB_CD@/instantbird/accountWizard.dtd (%chrome/instantbird/accountWizard.dtd)
+ locale/@AB_CD@/instantbird/accountWizard.properties (%chrome/instantbird/accountWizard.properties)
+ locale/@AB_CD@/instantbird/addbuddy.dtd (%chrome/instantbird/addbuddy.dtd)
+ locale/@AB_CD@/instantbird/newtab.properties (%chrome/instantbird/newtab.properties)
+ locale/@AB_CD@/instantbird/newtab.dtd (%chrome/instantbird/newtab.dtd)
+ locale/@AB_CD@/instantbird/buddytooltip.properties (%chrome/instantbird/buddytooltip.properties)
+ locale/@AB_CD@/instantbird/conversation.properties (%chrome/instantbird/conversation.properties)
+ locale/@AB_CD@/instantbird/core.properties (%chrome/instantbird/core.properties)
+ locale/@AB_CD@/instantbird/credits.dtd (%chrome/instantbird/credits.dtd)
+ locale/@AB_CD@/instantbird/engineManager.dtd (%chrome/instantbird/engineManager.dtd)
+ locale/@AB_CD@/instantbird/engineManager.properties (%chrome/instantbird/engineManager.properties)
+ locale/@AB_CD@/instantbird/extensions.properties (%chrome/instantbird/extensions.properties)
+ locale/@AB_CD@/instantbird/extensions-discover.dtd (%chrome/instantbird/extensions-discover.dtd)
+ locale/@AB_CD@/instantbird/instantbird.dtd (%chrome/instantbird/instantbird.dtd)
+ locale/@AB_CD@/instantbird/instantbird.properties (%chrome/instantbird/instantbird.properties)
+ locale/@AB_CD@/instantbird/joinChat.dtd (%chrome/instantbird/joinChat.dtd)
+ locale/@AB_CD@/instantbird/mintrayr.dtd (%chrome/instantbird/mintrayr.dtd)
+ locale/@AB_CD@/instantbird/proxies.dtd (%chrome/instantbird/proxies.dtd)
+ locale/@AB_CD@/instantbird/proxies.properties (%chrome/instantbird/proxies.properties)
+ locale/@AB_CD@/instantbird/quitDialog.properties (%chrome/instantbird/quitDialog.properties)
+ locale/@AB_CD@/instantbird/region.properties (%chrome/instantbird/region.properties)
+ locale/@AB_CD@/instantbird/tabbrowser.dtd (%chrome/instantbird/tabbrowser.dtd)
+ locale/@AB_CD@/instantbird/tabbrowser.properties (%chrome/instantbird/tabbrowser.properties)
+ locale/@AB_CD@/instantbird/updates.properties (%chrome/instantbird/updates.properties)
+ locale/@AB_CD@/instantbird/preferences/advanced.dtd (%chrome/instantbird/preferences/advanced.dtd)
+ locale/@AB_CD@/instantbird/preferences/applicationManager.dtd (%chrome/instantbird/preferences/applicationManager.dtd)
+ locale/@AB_CD@/instantbird/preferences/applicationManager.properties (%chrome/instantbird/preferences/applicationManager.properties)
+ locale/@AB_CD@/instantbird/preferences/applications.dtd (%chrome/instantbird/preferences/applications.dtd)
+ locale/@AB_CD@/instantbird/preferences/colors.dtd (%chrome/instantbird/preferences/colors.dtd)
+ locale/@AB_CD@/instantbird/preferences/connection.dtd (%chrome/instantbird/preferences/connection.dtd)
+ locale/@AB_CD@/instantbird/preferences/content.dtd (%chrome/instantbird/preferences/content.dtd)
+ locale/@AB_CD@/instantbird/preferences/main.dtd (%chrome/instantbird/preferences/main.dtd)
+ locale/@AB_CD@/instantbird/preferences/preferences.dtd (%chrome/instantbird/preferences/preferences.dtd)
+ locale/@AB_CD@/instantbird/preferences/preferences.properties (%chrome/instantbird/preferences/preferences.properties)
+ locale/@AB_CD@/instantbird/preferences/privacy.dtd (%chrome/instantbird/preferences/privacy.dtd)
+ locale/@AB_CD@/instantbird/preferences/tabs.dtd (%chrome/instantbird/preferences/tabs.dtd)
+ locale/@AB_CD@/instantbird/preferences/themes.dtd (%chrome/instantbird/preferences/themes.dtd)
+ locale/@AB_CD@/instantbird/preferences/themes.properties (%chrome/instantbird/preferences/themes.properties)
new file mode 100644
--- /dev/null
+++ b/im/locales/l10n.ini
@@ -0,0 +1,20 @@
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0. If a copy of the MPL was not distributed with this
+; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[general]
+depth = ../..
+
+[compare]
+dirs = instantbird
+ chat
+ instantbird/branding/release
+ instantbird/branding/nightly
+
+[includes]
+# non-central apps might want to use %(topsrcdir)s here, or other vars
+# RFE: that needs to be supported by compare-locales, too, though
+toolkit = mozilla/toolkit/locales/l10n.ini
+
+[extras]
+dirs = mozilla/extensions/spellcheck
new file mode 100644
--- /dev/null
+++ b/im/locales/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
--- /dev/null
+++ b/im/modules/ibCore.jsm
@@ -0,0 +1,328 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const EXPORTED_SYMBOLS = ["Core"];
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+Cu.import("resource:///modules/imServices.jsm");
+Cu.import("resource:///modules/imWindows.jsm");
+Cu.import("resource:///modules/ibNotifications.jsm");
+Cu.import("resource:///modules/ibSounds.jsm");
+Cu.import("resource:///modules/imXPCOMUtils.jsm");
+
+var Core = {
+ _events: [
+ "account-disconnected",
+ "browser-request",
+ "handle-xul-text-link",
+ "quit-application-requested"
+ ],
+
+ get bundle() l10nHelper("chrome://instantbird/locale/core.properties"),
+
+ initLibpurpleOverrides: function() {
+ let forcePurple = Services.prefs.getCharPref("chat.prpls.forcePurple")
+ .split(",")
+ .map(String.trim)
+ .filter(function(aPrplId) !!aPrplId);
+ if (!forcePurple.length)
+ return;
+
+ let catMan =
+ Cc["@mozilla.org/categorymanager;1"].getService(Ci.nsICategoryManager);
+ for (let prplId of forcePurple) {
+ catMan.addCategoryEntry("im-protocol-plugin", prplId,
+ "@instantbird.org/purple/protocol;1",
+ false, true);
+ }
+ },
+
+ init: function() {
+ try {
+ // Set the Vendor for breakpad only
+ if ("nsICrashReporter" in Ci) {
+ Components.classes["@mozilla.org/xre/app-info;1"]
+ .getService(Ci.nsICrashReporter)
+ .annotateCrashReport("Vendor", "Instantbird");
+ }
+ } catch(e) {
+ // This can fail if breakpad isn't enabled,
+ // don't worry too much about this exception.
+ }
+
+ if (!Ci.imICoreService) {
+ this._promptError("startupFailure.purplexpcomFileError");
+ return false;
+ }
+
+ if (!Components.classes["@mozilla.org/chat/core-service;1"]) {
+ this._promptError("startupFailure.xpcomRegistrationError");
+ return false;
+ }
+
+ this.initLibpurpleOverrides();
+
+ try {
+ Services.core.init();
+ }
+ catch (e) {
+ this._promptError("startupFailure.purplexpcomInitError", e);
+ return false;
+ }
+
+ Conversations.init();
+ Notifications.init();
+ Sounds.init();
+#ifdef XP_WIN
+ // For windows seven, initialize the jump list module.
+ const WINTASKBAR_CONTRACTID = "@mozilla.org/windows-taskbar;1";
+ if (WINTASKBAR_CONTRACTID in Cc &&
+ Cc[WINTASKBAR_CONTRACTID].getService(Ci.nsIWinTaskbar).available) {
+ let temp = {};
+ Cu.import("resource:///modules/ibWinJumpList.jsm", temp);
+ temp.WinJumpList.init();
+ }
+#endif
+
+ this._events.forEach(function (aTopic) {
+ Services.obs.addObserver(Core, aTopic, false);
+ });
+
+ let self = this;
+ Services.cmd.registerCommand({
+ name: "about",
+ get helpString() self.bundle("aboutCommand.help"),
+ usageContext: Ci.imICommand.CMD_CONTEXT_ALL,
+ priority: Ci.imICommand.CMD_PRIORITY_DEFAULT,
+ run: function(aMsg, aConv) {
+ let page = aMsg.replace(/^about:/, "");
+ let url = "about:" + page;
+ // If the page doesn't exist, we avoid opening a tab.
+ try {
+ Services.io.newChannelFromURI(Services.io.newURI(url, null, null));
+ } catch(e) {
+ if (e.result == Components.results.NS_ERROR_MALFORMED_URI) {
+ Services.conversations.getUIConversation(aConv).systemMessage(
+ self.bundle("aboutCommand.invalidPageMessage", page));
+ return true;
+ }
+ Components.utils.reportError(e); // Log unexpected errors.
+ return false;
+ }
+ // Try to get the most recent conversation window. If no such window exists,
+ // win will be null.
+ let win = Services.wm.getMostRecentWindow("Messenger:convs");
+ // Tries to open an aboutPanel in the specified window.
+ let showPage = function(aWindow, aPage) {
+ // Return false if the window doesn't exist.
+ if (!aWindow)
+ return false;
+ let panel = aWindow.document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "aboutPanel");
+ // Try to add the panel, and return false if the window couldn't accept
+ // it (e.g. tabbed conversations are disabled).
+ if (!aWindow.getTabBrowser().addPanel(panel))
+ return false;
+ panel.showAboutPage(aPage);
+ aWindow.getTabBrowser().selectPanel(panel);
+ return true;
+ }
+ // Try to show the page in win, and open a new window if it didn't work.
+ if (!showPage(win, page)) {
+ win = Services.ww.openWindow(null, "chrome://instantbird/content/instantbird.xul",
+ "_blank", "chrome,toolbar,resizable", null);
+ win.addEventListener("load", showPage.bind(null, win, page));
+ return true;
+ }
+ return true;
+ }
+ });
+
+ this._showAccountManagerIfNeeded(true);
+ return true;
+ },
+
+ showWindow: function(aWindowType, aUrl, aName, aFeatures) {
+ var win = Services.wm.getMostRecentWindow(aWindowType);
+ if (win)
+ win.focus();
+ else
+ win = Services.ww.openWindow(null, aUrl, aName, aFeatures, null);
+ return win;
+ },
+
+ showAccounts: function() {
+ this.showWindow("Messenger:Accounts",
+ "chrome://instantbird/content/accounts.xul", "Accounts",
+ "chrome,resizable,centerscreen");
+ },
+ showAddons: function() {
+ this.showWindow("Addons:Manager",
+ "chrome://instantbird/content/extensions.xul", "Addons",
+ "chrome,menubar,extrachrome,toolbar,dialog=no,resizable,centerscreen");
+ },
+ showContacts: function() {
+ this.showWindow("Messenger:blist",
+ "chrome://instantbird/content/blist.xul", "Contacts",
+ "chrome,dialog=no,all");
+ },
+ showPreferences: function() {
+ this.showWindow("Messenger:Preferences",
+ "chrome://instantbird/content/preferences/preferences.xul",
+ "Preferences",
+ "chrome,titlebar,toolbar,centerscreen,dialog=no");
+ },
+ showUpdates: function() {
+ // copied from checkForUpdates in mozilla/browser/base/content/utilityOverlay.js
+ var um =
+ Components.classes["@mozilla.org/updates/update-manager;1"]
+ .getService(Components.interfaces.nsIUpdateManager);
+ var prompter =
+ Components.classes["@mozilla.org/updates/update-prompt;1"]
+ .createInstance(Components.interfaces.nsIUpdatePrompt);
+
+ // If there's an update ready to be applied, show the "Update Downloaded"
+ // UI instead and let the user know they have to restart the browser for
+ // the changes to be applied.
+ if (um.activeUpdate && um.activeUpdate.state == "pending")
+ prompter.showUpdateDownloaded(um.activeUpdate);
+ else
+ prompter.checkForUpdates();
+ },
+
+ getIter: function(aEnumerator) {
+ while (aEnumerator.hasMoreElements())
+ yield aEnumerator.getNext();
+ },
+ getAccounts: function() this.getIter(Services.accounts.getAccounts()),
+
+ /* This function pops up the account manager if no account is
+ * connected or connecting.
+ * When called during startup (aIsStarting == true), it will also
+ * look for crashed accounts.
+ */
+ _showAccountManagerIfNeeded: function (aIsStarting) {
+ // If the current status is offline, we don't need the account manager
+ let isOffline =
+ Services.core.globalUserStatus.statusType == Ci.imIStatusInfo.STATUS_OFFLINE;
+ if (isOffline && !aIsStarting)
+ return;
+
+ let hasActiveAccount = false;
+ let hasCrashedAccount = false;
+ for (let acc in this.getAccounts()) {
+ if (acc.connected || acc.connecting)
+ hasActiveAccount = true;
+
+ // We only check for crashed accounts on startup.
+ if (aIsStarting && acc.autoLogin &&
+ acc.firstConnectionState == acc.FIRST_CONNECTION_CRASHED)
+ hasCrashedAccount = true;
+ }
+
+ /* We only display the account manager on startup if an account has crashed
+ or if all accounts are disconnected
+ In case of connection failure after an automatic reconnection attempt,
+ we don't want to popup the account manager */
+ if ((!hasActiveAccount && !isOffline) || (aIsStarting && hasCrashedAccount))
+ this.showAccounts();
+ },
+
+ observe: function(aSubject, aTopic, aData) {
+ if (aTopic == "account-disconnected") {
+ let account = aSubject.QueryInterface(Ci.imIAccount);
+ if (!account.reconnectAttempt)
+ this._showAccountManagerIfNeeded(false);
+ return;
+ }
+
+ if (aTopic == "browser-request") {
+ Services.ww.openWindow(null,
+ "chrome://chat/content/browserRequest.xul",
+ null, "chrome", aSubject);
+ return;
+ }
+
+ if (aTopic == "handle-xul-text-link") {
+ Cc["@mozilla.org/uriloader/external-protocol-service;1"]
+ .getService(Ci.nsIExternalProtocolService)
+ .loadURI(Services.io.newURI(aData, null, null));
+ aSubject.QueryInterface(Ci.nsISupportsPRBool).data = true;
+ return;
+ }
+
+ if (aTopic == "quit-application-requested") {
+ this._onQuitRequest(aSubject, aData);
+ return;
+ }
+ },
+
+ _onQuitRequest: function (aCancelQuit, aQuitType) {
+ // The request has already been canceled somewhere else
+ if ((aCancelQuit instanceof Components.interfaces.nsISupportsPRBool)
+ && aCancelQuit.data)
+ return;
+
+ if (!Services.prefs.getBoolPref("messenger.warnOnQuit"))
+ return;
+
+ let unreadConvsCount =
+ Services.conversations.getUIConversations()
+ .filter(function(c) c.unreadTargetedMessageCount)
+ .length;
+ if (unreadConvsCount == 0)
+ return;
+
+ let bundle =
+ Services.strings.createBundle("chrome://instantbird/locale/quitDialog.properties");
+ let promptTitle = bundle.GetStringFromName("dialogTitle");
+ let promptMessage = bundle.GetStringFromName("message");
+ let promptCheckbox = bundle.GetStringFromName("checkbox");
+ let action = aQuitType == "restart" ? "restart" : "quit";
+ let button = bundle.GetStringFromName(action + "Button");
+
+ Components.utils.import("resource://gre/modules/PluralForm.jsm");
+ promptMessage = PluralForm.get(unreadConvsCount, promptMessage)
+ .replace("#1", unreadConvsCount);
+
+ let prompts = Services.prompt;
+ let flags = prompts.BUTTON_TITLE_IS_STRING * prompts.BUTTON_POS_0 +
+ prompts.BUTTON_TITLE_CANCEL * prompts.BUTTON_POS_1 +
+ prompts.BUTTON_POS_1_DEFAULT;
+ let checkbox = {value: false};
+ let parentWindow = Services.wm.getMostRecentWindow("Messenger:convs") ||
+ Services.wm.getMostRecentWindow("Messenger:blist");
+ if (parentWindow)
+ parentWindow.focus();
+ if (prompts.confirmEx(parentWindow, promptTitle, promptMessage, flags,
+ button, null, null, promptCheckbox, checkbox)) {
+ aCancelQuit.data = true;
+ return;
+ }
+
+ if (checkbox.value)
+ Services.prefs.setBoolPref("messenger.warnOnQuit", false);
+ },
+
+ _promptError: function(aKeyString, aMessage) {
+ var bundle = this.bundle;
+
+ var title = bundle("startupFailure.title");
+ var message = bundle("startupFailure.apologize") + "\n\n" +
+ (aMessage ? bundle(aKeyString, aMessage)
+ : bundle(aKeyString) + "\n\n" + bundle("startupFailure.update"));
+ const nsIPromptService = Components.interfaces.nsIPromptService;
+ const flags =
+ nsIPromptService.BUTTON_POS_1 * nsIPromptService.BUTTON_TITLE_IS_STRING +
+ nsIPromptService.BUTTON_POS_0 * nsIPromptService.BUTTON_TITLE_IS_STRING;
+
+ var prompts = Services.prompt;
+ if (!prompts.confirmEx(null, title, message, flags,
+ bundle("startupFailure.buttonUpdate"),
+ bundle("startupFailure.buttonClose"),
+ null, null, {}))
+ this.showUpdates();
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/modules/ibInterruptions.jsm
@@ -0,0 +1,31 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const EXPORTED_SYMBOLS = ["Interruptions"];
+
+var Interruptions = {
+ _listeners: [],
+ addListener: function(aListener) {
+ if (this._listeners.indexOf(aListener) == -1)
+ this._listeners.push(aListener);
+ },
+ removeListener: function(aListener) {
+ this._listeners = this._listeners.filter(function(o) o !== aListener);
+ },
+
+ /* All code about to perform an action that could interrupt the
+ * user's train of thoughts should call this method.
+ *
+ * aReason should be the notification that justifies the interruption.
+ * (eg. "new-ui-conversation", "contact-signed-on", ...)
+ * aSubject should be the related object that listeners can analyse.
+ * (eg. imIConversation, imIContact, ...)
+ * aType Is the action that can be prevented by denying the request.
+ * (eg. "sound", "notification", "show-conversation")
+ *
+ * Returns true if the request is granted, false otherwise.
+ */
+ requestInterrupt: function(aReason, aSubject, aType)
+ this._listeners.every(function (l) l(aReason, aSubject, aType))
+};
new file mode 100644
--- /dev/null
+++ b/im/modules/ibNotifications.jsm
@@ -0,0 +1,91 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const EXPORTED_SYMBOLS = ["Notifications"];
+
+Components.utils.import("resource:///modules/imServices.jsm");
+Components.utils.import("resource:///modules/imWindows.jsm");
+Components.utils.import("resource:///modules/hiddenWindow.jsm");
+Components.utils.import("resource:///modules/ibInterruptions.jsm");
+
+var Notifications = {
+ get ellipsis () {
+ let ellipsis = "[\u2026]";
+
+ try {
+ ellipsis =
+ Services.prefs.getComplexValue("intl.ellipsis",
+ Components.interfaces.nsIPrefLocalizedString).data;
+ } catch (e) { }
+ return ellipsis;
+ },
+
+ _showMessageNotification: function (aMessage) {
+ // Put the message content into a div node of the hidden HTML window.
+ let doc = getHiddenHTMLWindow().document;
+ let xhtmlElement = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
+ xhtmlElement.innerHTML = aMessage.message.replace(/<br>/gi, "<br/>");
+
+ // Convert the div node content to plain text.
+ let encoder =
+ Components.classes["@mozilla.org/layout/documentEncoder;1?type=text/plain"]
+ .createInstance(Components.interfaces.nsIDocumentEncoder);
+ encoder.init(doc, "text/plain", 0);
+ encoder.setNode(xhtmlElement);
+ let messageText = encoder.encodeToString().replace(/\s+/g, " ");
+
+ // Crop the end of the text if needed.
+ if (messageText.length > 50)
+ messageText = messageText.substr(0, 50) + this.ellipsis;
+
+ // Use the buddy icon if available for the icon of the notification.
+ let icon;
+ let conv = aMessage.conversation;
+ if (!conv.isChat) {
+ let buddy = conv.buddy;
+ if (buddy)
+ icon = buddy.buddyIconFilename;
+ }
+ if (!icon)
+ icon = "chrome://instantbird/skin/newMessage.png";
+
+ // Prepare an observer to focus the conversation if the
+ // notification is clicked.
+ let observer = {
+ observe: function(aSubject, aTopic, aData) {
+ if (aTopic == "alertclickcallback")
+ Conversations.focusConversation(aMessage.conversation);
+ }
+ };
+
+ // Handle third person messages
+ let name = aMessage.alias || aMessage.who;
+ if (messageText.startsWith("/me "))
+ messageText = messageText.replace(/^\/me/, name);
+
+ // Finally show the notification!
+ Components.classes["@mozilla.org/alerts-service;1"]
+ .getService(Components.interfaces.nsIAlertsService)
+ .showAlertNotification(icon, name, messageText, true, "", observer);
+ },
+
+ init: function() {
+ Services.obs.addObserver(Notifications, "new-text", false);
+ },
+
+ _notificationPrefName: "messenger.options.notifyOfNewMessages",
+ observe: function(aSubject, aTopic, aData) {
+ if (aTopic != "new-text")
+ return;
+
+ if (!aSubject.incoming || aSubject.system ||
+ (aSubject.conversation.isChat && !aSubject.containsNick))
+ return;
+
+ if (!Conversations.isConversationWindowFocused() &&
+ Services.prefs.getBoolPref(this._notificationPrefName) &&
+ Interruptions.requestInterrupt(aTopic, aSubject, "notification"))
+ this._showMessageNotification(aSubject);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/modules/ibSounds.jsm
@@ -0,0 +1,63 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const EXPORTED_SYMBOLS = ["Sounds"];
+
+Components.utils.import("resource:///modules/hiddenWindow.jsm");
+Components.utils.import("resource:///modules/imServices.jsm");
+Components.utils.import("resource:///modules/ibInterruptions.jsm");
+
+var Sounds = {
+ soundEvents: ["contact-signed-on", "contact-signed-off", "new-text"],
+ soundFiles: {
+ incoming: "chrome://instantbird-sounds/skin/receive.wav",
+ outgoing: "chrome://instantbird-sounds/skin/send.wav",
+ login: "chrome://instantbird-sounds/skin/login.wav",
+ logout: "chrome://instantbird-sounds/skin/logout.wav",
+ alert: "chrome://instantbird-sounds/skin/alert.wav"
+ },
+
+ getBoolPref: function(aPrefName)
+ Services.prefs.getBoolPref("messenger.options.playSounds." + aPrefName),
+
+ play: function sh_play(aEvent, aPref, aSubject, aTopic) {
+ if (!this.getBoolPref(aPref) || !this.getBoolPref(aEvent) ||
+ !Interruptions.requestInterrupt(aTopic, aSubject, "sound"))
+ return;
+
+ new getHiddenHTMLWindow().Audio(this.soundFiles[aEvent])
+ .setAttribute("autoplay", "true");
+ },
+
+ observe: function(aObject, aTopic, aMsg) {
+ switch(aTopic) {
+ case "contact-signed-on":
+ this.play("login", "blist", aObject, aTopic);
+ break;
+
+ case "contact-signed-off":
+ this.play("logout", "blist", aObject, aTopic);
+ break;
+
+ case "new-text":
+ if (aObject.outgoing)
+ this.play("outgoing", "message", aObject, aTopic);
+ else if (aObject.incoming && !aObject.system) {
+ if (!aObject.conversation.isChat)
+ this.play("incoming", "message", aObject, aTopic);
+ else if (aObject.containsNick)
+ this.play("alert", "message", aObject, aTopic);
+ }
+ break;
+
+ default:
+ throw "bad notification";
+ }
+ },
+
+ init: function() {
+ for each (let topic in this.soundEvents)
+ Services.obs.addObserver(this, topic, false);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/modules/ibTagMenu.jsm
@@ -0,0 +1,86 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const EXPORTED_SYMBOLS = ["TagMenu"];
+
+const Cu = Components.utils;
+Cu.import("resource:///modules/imServices.jsm");
+Cu.import("resource:///modules/imXPCOMUtils.jsm");
+
+XPCOMUtils.defineLazyGetter(this, "_", function()
+ l10nHelper("chrome://instantbird/locale/instantbird.properties")
+);
+
+// If a contact binding is given in aTarget, the menu checkmarks the existing
+// tags on this contact.
+function TagMenu(aParent, aWindow, aTarget = null) {
+ this.parent = aParent;
+ this.window = aWindow;
+ if (aWindow)
+ this.document = aWindow.document;
+ this.target = aTarget;
+}
+TagMenu.prototype = {
+ document: null,
+ window: null,
+ target: null,
+ tagsPopupShowing: function() {
+ if (!this.parent.onContact && !this.parent.onBuddy && !this.parent.onNick)
+ return;
+
+ let popup = this.document.getElementById("context-tags-popup");
+ let item;
+ while ((item = popup.firstChild) && item.localName != "menuseparator")
+ popup.removeChild(item);
+
+ if (this.target) {
+ var tags = this.target.contact.getTags();
+ var groupId = this.target.group.groupId;
+ }
+
+ let allTags = Services.tags.getTags().reverse();
+ for (let tag of allTags) {
+ item = this.document.createElement("menuitem");
+ item.setAttribute("label", tag.name);
+ let id = tag.id;
+ item.groupId = id;
+ if (this.target) {
+ item.setAttribute("type", "checkbox");
+ if (tags.some(function(t) t.id == id)) {
+ item.setAttribute("checked", "true");
+ if (tags.length == 1)
+ item.setAttribute("disabled", "true"); // can't remove the last tag.
+ }
+ }
+ popup.insertBefore(item, popup.firstChild);
+ }
+ },
+ tag: function(aEvent, aCallback) {
+ let id = aEvent.originalTarget.groupId;
+ if (!id)
+ return false;
+
+ try {
+ return aCallback(Services.tags.getTagById(id));
+ } catch(e) {
+ Cu.reportError(e);
+ return false;
+ }
+ },
+ addNewTag: function(aCallback) {
+ let name = {};
+ if (!Services.prompt.prompt(this.window, _("newTagPromptTitle"),
+ _("newTagPromptMessage"), name, null,
+ {value: false}) || !name.value)
+ return false; // the user canceled
+
+ try {
+ // If the tag already exists, createTag will return it.
+ return aCallback(Services.tags.createTag(name.value));
+ } catch(e) {
+ Cu.reportError(e);
+ return false;
+ }
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/modules/ibWinJumpList.jsm
@@ -0,0 +1,142 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const EXPORTED_SYMBOLS = ["WinJumpList"];
+
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
+
+Cu.import("resource:///modules/imServices.jsm");
+Cu.import("resource:///modules/imStatusUtils.jsm");
+
+var WinJumpList = {
+ winJumpListBuilder: null,
+
+ /*
+ Jumplist entries can be of the following 'type' (required attribute):
+ type: "shortcut" // nsIJumpListShortcut
+ label: <string>, // label shown in the jumplist
+ description: <string> // longer description, shown in a tooltip
+ parameter: <string> // commandline parameter for this action
+ iconIndex: <int> // number of icon resource in executable
+ id: <string> // Only used to identify a certain element
+ // if an extension wants to insert an
+ // item at a specific position
+ or
+ type: "separator" // nsIJumpListSeparator, no way to customize this
+ id: <string> // see description of shortcut id
+ */
+ // Default jumplist entries for changing the status.
+ jumplistEntries: [
+ { type: "shortcut",
+ id: "status_available",
+ get label() Status.toLabel("available"),
+ description: null,
+ parameter: "-status available",
+ iconIndex: 1
+ },
+ { type: "shortcut",
+ id: "status_unavailable",
+ get label() Status.toLabel("unavailable"),
+ description: null,
+ parameter: "-status unavailable",
+ iconIndex: 2
+ },
+ { type: "shortcut",
+ id: "status_offline",
+ get label() Status.toLabel("offline"),
+ description: null,
+ parameter: "-status offline",
+ iconIndex: 3
+ }
+ ],
+
+ // This is called by the Instantbird core and does not need to be re-called by
+ // any other code working with jump lists.
+ init: function WJL_init() {
+ let builder = Cc["@mozilla.org/windows-taskbar;1"]
+ .getService(Ci.nsIWinTaskbar).createJumpListBuilder();
+ if (!builder || !builder.available)
+ return;
+
+ this.winJumpListBuilder = builder;
+
+ // Set the jump list using the default jumplistEntries.
+ this.set();
+ },
+
+ set: function WJL_set() {
+ // Return early if winJumpListBuilder doesn't exist.
+ if (!this.winJumpListBuilder)
+ return;
+
+ // Remove the current jump list so it can be replaced.
+ this.reset();
+
+ let items = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
+
+ for each (let currentItem in this.jumplistEntries) {
+ let item;
+ if (currentItem.type == "separator")
+ item = this._getSeparatorItem();
+ else if (currentItem.type == "shortcut") {
+ item = this._getHandlerAppItem(currentItem.label,
+ currentItem.description,
+ currentItem.parameter,
+ currentItem.iconIndex);
+ }
+ else
+ throw "Unknown jumplist item type: " + currentItem.type;
+
+ items.appendElement(item, false);
+ }
+
+ try {
+ // Initialize the array.
+ let items2 = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
+ this.winJumpListBuilder.initListBuild(items2);
+
+ this.winJumpListBuilder.addListToBuild(
+ Ci.nsIJumpListBuilder.JUMPLIST_CATEGORY_TASKS, items);
+
+ // Send the list to Windows
+ this.winJumpListBuilder.commitListBuild();
+ } catch (e) {
+ Cu.reportError(e);
+ }
+ },
+
+ reset: function WJL_reset() {
+ // Remove the jump list.
+ if (this.winJumpListBuilder)
+ this.winJumpListBuilder.deleteActiveList();
+ },
+
+ _getSeparatorItem: function WJL__getSeparatorItem() {
+ return Cc["@mozilla.org/windows-jumplistseparator;1"]
+ .createInstance(Ci.nsIJumpListSeparator);
+ },
+
+ _getHandlerAppItem: function WJL__getHandlerAppItem(aName, aDescription,
+ aArgs, aIconIndex) {
+ var file = Services.dirsvc.get("XCurProcD", Ci.nsILocalFile);
+
+ // XXX where can we grab this from in the build? Do we need to?
+ file.append("instantbird.exe");
+
+ var handlerApp = Cc["@mozilla.org/uriloader/local-handler-app;1"]
+ .createInstance(Ci.nsILocalHandlerApp);
+ handlerApp.executable = file;
+ // Handlers default to the leaf name if a name is not specified.
+ if (aName && aName.length != 0)
+ handlerApp.name = aName;
+ handlerApp.detailedDescription = aDescription;
+ handlerApp.appendParameter(aArgs);
+
+ var item = Cc["@mozilla.org/windows-jumplistshortcut;1"]
+ .createInstance(Ci.nsIJumpListShortcut);
+ item.app = handlerApp;
+ item.iconIndex = aIconIndex;
+ return item;
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/modules/imWindows.jsm
@@ -0,0 +1,231 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const CONVERSATION_WINDOW_URI = "chrome://instantbird/content/instantbird.xul";
+const EXPORTED_SYMBOLS = ["Conversations"];
+
+Components.utils.import("resource:///modules/imServices.jsm");
+Components.utils.import("resource:///modules/ibInterruptions.jsm");
+
+var Conversations = {
+ _unreadCount: 0,
+ get unreadCount() this._unreadCount,
+ set unreadCount(val) {
+ if (val == this._unreadCount)
+ return val;
+ Services.obs.notifyObservers(null, "unread-im-count-changed", val);
+ return (this._unreadCount = val);
+ },
+ _windows: [],
+ registerWindow: function(aWindow) {
+ if (this._windows.indexOf(aWindow) == -1)
+ this._windows.unshift(aWindow);
+
+ if (this._pendingConversations) {
+ // Cache in a variable and delete the existing notification array
+ // before redispatching the notifications so that the observe
+ // method can recreate it.
+ let notifications = this._pendingConversations;
+ this._pendingConversations = null;
+ for each (let conv in notifications)
+ this.showConversation(conv);
+ }
+ },
+ unregisterWindow: function(aWindow) {
+ let index = this._windows.indexOf(aWindow);
+ if (index != -1)
+ this._windows.splice(index, 1);
+ },
+
+ _uiConv: {},
+ _conversations: [],
+ registerConversation: function(aConversation) {
+ if (this._conversations.indexOf(aConversation) == -1)
+ this._conversations.push(aConversation);
+
+ let uiConv = aConversation.conv;
+ this._uiConv[uiConv.id] = aConversation;
+
+ this.forgetHiddenConversation(uiConv);
+ },
+ unregisterConversation: function(aConversation, aShouldClose) {
+ let index = this._conversations.indexOf(aConversation);
+ if (index != -1)
+ this._conversations.splice(index, 1);
+
+ let uiConv = aConversation.conv;
+ if (this._uiConv[uiConv.id] == aConversation) {
+ delete this._uiConv[uiConv.id];
+ if (aShouldClose === true) {
+ this.forgetHiddenConversation(uiConv);
+ uiConv.close();
+ }
+ else if (aShouldClose === false || !uiConv.checkClose())
+ this.hideConversation(uiConv);
+ }
+ },
+
+ isConversationWindowFocused: function()
+ this._windows.length > 0 && this._windows[0].document.hasFocus(),
+ isUIConversationDisplayed: function(aUIConv) aUIConv.id in this._uiConv,
+ focusConversation: function(aConv) {
+ let uiConv = Services.conversations.getUIConversation(aConv);
+ uiConv.target = aConv;
+ if (!this.isUIConversationDisplayed(uiConv))
+ this.showConversation(uiConv);
+ // The conversation may still not be displayed if we are waiting
+ // for a new window. In this case the conversation will be focused
+ // automatically anyway.
+ if (this.isUIConversationDisplayed(uiConv)) {
+ let conv = this._uiConv[uiConv.id];
+ let doc = conv.ownerDocument;
+ doc.getElementById("conversations").selectPanel(conv);
+ doc.defaultView.focus();
+#ifdef XP_MACOSX
+ Components.classes["@mozilla.org/widget/macdocksupport;1"]
+ .getService(Components.interfaces.nsIMacDockSupport)
+ .activateApplication(true);
+#endif
+ }
+ return uiConv;
+ },
+
+ onWindowFocus: function (aWindow) {
+ let position = this._windows.indexOf(aWindow);
+ if (position != -1) {
+ this._windows.splice(position, 1);
+ this._windows.unshift(aWindow);
+ }
+ this.unreadCount = 0;
+ },
+
+ init: function() {
+ let os = Services.obs;
+ ["new-text",
+ "new-ui-conversation"].forEach(function (aTopic) {
+ os.addObserver(this, aTopic, false);
+ }, this);
+ },
+
+ _pendingConversations: null,
+ observe: function(aSubject, aTopic, aMsg) {
+ if (aTopic == "new-text") {
+ if (aSubject.incoming && !aSubject.system &&
+ (!aSubject.conversation.isChat || aSubject.containsNick)) {
+ if (!this.isConversationWindowFocused())
+ ++this.unreadCount;
+ let uiConv =
+ Services.conversations.getUIConversation(aSubject.conversation);
+ if (!this.isUIConversationDisplayed(uiConv) &&
+ this._requestShowConversation(aTopic, aSubject))
+ this.showConversation(uiConv);
+ }
+ return;
+ }
+
+ if (aTopic != "new-ui-conversation")
+ return;
+
+ if (!this._isConversationHidden(aSubject) &&
+ this._requestShowConversation(aTopic, aSubject))
+ this.showConversation(aSubject);
+ else
+ this.hideConversation(aSubject);
+ },
+
+ _hiddenConversationsPref: "messenger.conversations.hiddenConversations",
+ get _hiddenConversations() {
+ let hiddenConvs = {};
+ try {
+ hiddenConvs =
+ JSON.parse(Services.prefs.getCharPref(this._hiddenConversationsPref));
+ } catch(e) {}
+ delete this._hiddenConversations;
+ return (this._hiddenConversations = hiddenConvs);
+ },
+
+ forgetHiddenConversation: function(aConv) {
+ if (this._isConversationHidden(aConv)) {
+ let accountId = aConv.account.id;
+ delete this._hiddenConversations[accountId][aConv.normalizedName];
+ if (Object.keys(this._hiddenConversations[accountId]).length == 0)
+ delete this._hiddenConversations[accountId];
+ this._saveHiddenConversations();
+ }
+ },
+
+ _saveHiddenConversations: function() {
+ Services.prefs.setCharPref(this._hiddenConversationsPref,
+ JSON.stringify(this._hiddenConversations));
+ },
+
+ hideConversation: function(aConv) {
+ Services.obs.notifyObservers(aConv, "ui-conversation-hidden", null);
+ if (!aConv.isChat)
+ return;
+ let accountId = aConv.account.id;
+ if (!(accountId in this._hiddenConversations))
+ this._hiddenConversations[accountId] = {};
+ this._hiddenConversations[accountId][aConv.normalizedName] = true;
+ this._saveHiddenConversations();
+ },
+
+ _isConversationHidden: function(aConv) {
+ let accountId = aConv.account.id;
+ return aConv.isChat && accountId in this._hiddenConversations &&
+ Object.prototype.hasOwnProperty.call(this._hiddenConversations[accountId],
+ aConv.normalizedName);
+ },
+
+ _requestShowConversation: function(aTopic, aSubject)
+ Interruptions.requestInterrupt(aTopic, aSubject, "show-conversation"),
+
+ showConversation: function(aConv) {
+ if (this.isUIConversationDisplayed(aConv) ||
+ (this._pendingConversations &&
+ this._pendingConversations.indexOf(aConv) != -1))
+ return;
+
+ Services.obs.notifyObservers(aConv, "showing-ui-conversation", null);
+ // The conversation is not displayed anywhere yet.
+ // First, check if an existing conversation window can accept it.
+ for each (let win in this._windows)
+ if (win.document.getElementById("conversations").addConversation(aConv))
+ return;
+
+ // At this point, no existing registered window can accept the conversation.
+ if (this._pendingConversations) {
+ // If we are already creating a window, append the notification.
+ this._pendingConversations.push(aConv);
+ }
+ else {
+ // We need to create a new window.
+ this._pendingConversations = [aConv];
+ Services.ww.openWindow(null, CONVERSATION_WINDOW_URI, "_blank",
+ "chrome,toolbar,resizable", null);
+ }
+ },
+
+ showNewTab: function() {
+ let win = Services.wm.getMostRecentWindow("Messenger:convs");
+ let addNewTab = function(aWindow) {
+ if (!aWindow)
+ return false;
+ let newtab = aWindow.document.createElementNS(
+ "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
+ "newtab");
+ if (!aWindow.getTabBrowser().addPanel(newtab))
+ return false;
+ aWindow.getTabBrowser().selectPanel(newtab);
+ newtab.ownerDocument.defaultView.focus();
+ newtab.init();
+ return true;
+ }
+ if (!addNewTab(win)) {
+ win = Services.ww.openWindow(null, CONVERSATION_WINDOW_URI, "_blank",
+ "chrome,toolbar,resizable", null);
+ win.addEventListener("load", addNewTab.bind(null, win));
+ }
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/modules/moz.build
@@ -0,0 +1,19 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+EXTRA_JS_MODULES += [
+ 'ibInterruptions.jsm',
+ 'ibNotifications.jsm',
+ 'ibSounds.jsm',
+ 'ibTagMenu.jsm',
+]
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+ EXTRA_JS_MODULES += ['ibWinJumpList.jsm']
+
+EXTRA_PP_JS_MODULES += [
+ 'ibCore.jsm',
+ 'imWindows.jsm',
+]
new file mode 100644
--- /dev/null
+++ b/im/moz.build
@@ -0,0 +1,20 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+CONFIGURE_SUBST_FILES += ['installer/Makefile']
+
+# app is always last as it packages up the built files on mac.
+DIRS += ['app']
+
+if CONFIG['OS_ARCH'] == 'WINNT':
+ DIRS += ['installer/windows']
+
+PARALLEL_DIRS += [
+ 'content',
+ 'locales',
+ 'themes',
+ 'modules',
+ 'components'
+]
new file mode 100644
--- /dev/null
+++ b/im/test/xpcshell.ini
@@ -0,0 +1,9 @@
+; This Source Code Form is subject to the terms of the Mozilla Public
+; License, v. 2.0. If a copy of the MPL was not distributed with this
+; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[include:chat/modules/test/xpcshell.ini]
+[include:chat/components/src/test/xpcshell.ini]
+[include:chat/protocols/irc/test/xpcshell.ini]
+[include:chat/protocols/yahoo/test/xpcshell.ini]
+[include:purple/purplexpcom/src/test/xpcshell.ini]
new file mode 100644
--- /dev/null
+++ b/im/themes/Makefile.in
@@ -0,0 +1,16 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+ICON_FILES := icon.png
+ICON_DEST = $(FINAL_TARGET)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
+INSTALL_TARGETS += ICON
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/im/themes/accountWizard.css
@@ -0,0 +1,104 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+%ifdef XP_WIN
+@namespace html url("http://www.w3.org/1999/xhtml");
+%endif
+
+#accountprotocol,
+#accountsummary {
+ overflow: visible;
+}
+
+#summarygrid {
+ overflow: auto;
+}
+
+#otherListItem {
+ padding-left: 40px;
+ min-height: 40px;
+ -moz-box-orient: vertical;
+ -moz-box-pack: center;
+}
+
+.top-proto-name, .top-proto-description {
+ margin: 2px 2px;
+ padding: 0px;
+}
+
+.top-proto-name {
+ font-size: larger;
+}
+
+.top-proto-description {
+ font-size: smaller;
+ opacity: 0.85;
+}
+
+.top-proto-icon {
+ padding: 4px;
+}
+
+groupbox.collapsable {
+ -moz-user-focus: normal;
+}
+
+%ifdef XP_WIN
+groupbox.collapsable .caption-text {
+ border: 1px solid transparent;
+}
+
+groupbox.collapsable:focus .caption-text {
+ border: 1px dotted ThreeDDarkShadow;
+}
+%endif
+
+groupbox.collapsable[closed="true"] {
+ border: none;
+ -moz-appearance: none;
+}
+
+groupbox[closed="true"] > .groupbox-body {
+ display: none;
+}
+
+%ifdef XP_MACOSX
+groupbox.collapsable caption .caption-icon {
+ width: 11px;
+ height: 11px;
+ background-repeat: no-repeat;
+ background-position: center;
+ -moz-margin-end: 2px;
+ background-image: url("chrome://global/skin/arrow/arrow-dn.gif");
+}
+
+groupbox.collapsable[closed="true"] caption .caption-icon {
+ background-image: url("chrome://global/skin/arrow/arrow-rit.gif");
+}
+%else
+groupbox.collapsable caption .caption-icon {
+ width: 9px;
+ height: 9px;
+ background-repeat: no-repeat;
+ background-position: center;
+ -moz-margin-start: 1px;
+ -moz-margin-end: 3px;
+ background-image: url("chrome://global/skin/tree/twisty-open.png");
+}
+
+
+groupbox.collapsable[closed="true"] caption .caption-icon {
+ background-image: url("chrome://global/skin/tree/twisty-clsd.png");
+}
+%endif
+
+#value-column {
+ min-width: 15em;
+}
+
+%ifdef XP_WIN
+textbox html|*.textbox-input:-moz-placeholder {
+ font-style: normal;
+}
+%endif
new file mode 100644
--- /dev/null
+++ b/im/themes/accounts-aero.css
@@ -0,0 +1,47 @@
+% This Source Code Form is subject to the terms of the Mozilla Public
+% License, v. 2.0. If a copy of the MPL was not distributed with this
+% file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+%include accounts.css
+
+/* This applies only if Glass is available. */
+@media all and (-moz-windows-compositor) {
+ #accountManager {
+ -moz-appearance: -moz-win-borderless-glass;
+ background-color: transparent;
+ }
+}
+
+/* Our fallback for Aero Basic: set the background color appropriately. */
+@media not all and (-moz-windows-compositor) {
+ #accountManager:-moz-system-metric(windows-default-theme) {
+ background-color: rgb(185, 209, 234);
+ }
+ #accountManager:-moz-system-metric(windows-default-theme):-moz-window-inactive {
+ background-color: rgb(215, 228, 242);
+ }
+}
+
+/* This should apply to both full Aero and Aero Basic as well. */
+@media all and (-moz-windows-theme: aero) {
+ #bottombuttons {
+ background-color: rgba(255, 255, 255, 0.8);
+ border: 1px solid rgba(0, 0, 0, 0.25);
+ border-radius: 0 0 5px 5px;
+ }
+
+ #accountsDesk > * {
+ border-radius: 5px 5px 0 0;
+ border-top: 1px solid rgba(0, 0, 0, 0.25);
+ border-left: 1px solid rgba(0, 0, 0, 0.25);
+ border-right: 1px solid rgba(0, 0, 0, 0.25);
+ }
+
+ #accountsNotificationBox {
+ background-color: rgba(255, 255, 255, 0.8);
+ }
+
+ #accountlist {
+ border-bottom: none;
+ }
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/accounts.css
@@ -0,0 +1,217 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* large parts copied from the addon manager */
+
+#accountManager {
+ background-color: ThreeDFace;
+ padding: 0 0;
+ margin: 0 0;
+}
+
+%ifndef XP_MACOSX
+notification > hbox {
+ border: none !important;
+ border-bottom: 1px solid ThreeDShadow !important;
+}
+%endif
+
+#accountsNotificationBox {
+ margin: 0 0;
+ -moz-appearance: none;
+}
+
+#noAccountScreen {
+ background-color: -moz-Dialog;
+ overflow: auto;
+}
+#noAccountBox {
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ border: 1px solid ThreeDShadow;
+ border-radius: 10px;
+ padding: 1.1em;
+ -moz-padding-start: 20px;
+ margin-left: 1em;
+ margin-right: 1em;
+}
+#noAccountImage {
+ list-style-image: url("chrome://global/skin/icons/information-64.png");
+ -moz-margin-end: 1.2em;
+}
+#noAccountInnerBox {
+ max-width: 25em;
+}
+#noAccountTitle {
+ margin: 0 1em 0.6em 0;
+ font-size: 160%;
+ border-bottom: 1px solid ThreeDLightShadow
+}
+#noAccountDesc {
+ font-size: 110%;
+}
+
+#accountlist {
+ margin: 0 0;
+ -moz-appearance: none;
+%ifndef XP_MACOSX
+ border-bottom: 2px solid;
+ -moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
+%endif
+}
+
+#bottombuttons {
+%ifdef XP_MACOSX
+ -moz-box-pack: end;
+ -moz-padding-start: 2px;
+ -moz-padding-end: 11px;
+ -moz-appearance: statusbar;
+ min-height: 28px;
+%else
+ margin: 0 0;
+%endif
+}
+
+%ifdef XP_MACOSX
+
+%filter substitution
+%define loweredShadow 0 1px rgba(255, 255, 255, .4)
+%define focusRingShadow 0 0 1px -moz-mac-focusring inset, 0 0 4px 1px -moz-mac-focusring, 0 0 1.5px 1px -moz-mac-focusring
+
+%define roundButtonShadow 0 1px rgba(255, 255, 255, .4)
+%define roundButtonPressedShadow inset 0 1px 3px rgba(0, 0, 0, .2), 0 1px rgba(255, 255, 255, .4)
+
+%define toolbarbuttonBorderColor rgba(59, 59, 59, 0.9)
+%define toolbarbuttonCornerRadius 3px
+%define toolbarbuttonBackground -moz-linear-gradient(top, #FFF, #ADADAD) repeat-x
+%define toolbarbuttonPressedInnerShadow inset rgba(0, 0, 0, 0.3) 0 -6px 10px, inset #000 0 1px 3px, inset rgba(0, 0, 0, 0.2) 0 1px 3px
+%define toolbarbuttonPressedBackgroundColor #B5B5B5
+%define toolbarbuttonInactiveBorderColor rgba(146, 146, 146, 0.84)
+%define toolbarbuttonInactiveFontColor #7C7C7C
+%define toolbarbuttonInactiveBackgroundImage -moz-linear-gradient(top, #FFF, #CCC)
+
+button {
+ -moz-appearance: none;
+ min-height: 18px;
+ min-width: 0;
+ margin: 0 3px;
+ padding: 0 2px;
+ text-shadow: @loweredShadow@;
+ border: 1px solid @toolbarbuttonBorderColor@;
+ border-radius: @toolbarbuttonCornerRadius@;
+ box-shadow: @loweredShadow@;
+ background: @toolbarbuttonBackground@;
+ background-origin: border-box;
+}
+
+button:focus {
+ box-shadow: @focusRingShadow@, @roundButtonShadow@;
+}
+
+button:active:hover:focus {
+ box-shadow: @focusRingShadow@, @roundButtonPressedShadow@;
+}
+
+button:hover:active:not([disabled="true"]) {
+ background: @toolbarbuttonPressedBackgroundColor@;
+ text-shadow: @loweredShadow@;
+ box-shadow: @toolbarbuttonPressedInnerShadow@, @loweredShadow@;
+}
+
+#bottombuttons button:-moz-window-inactive {
+ color: @toolbarbuttonInactiveFontColor@ !important; /* remove this when we support click-through, bug 392188 */
+ border-color: @toolbarbuttonInactiveBorderColor@;
+ background-image: @toolbarbuttonInactiveBackgroundImage@;
+ opacity: 0.7;
+}
+%else
+%ifndef XP_WIN
+#newaccount {
+ margin-left: 0;
+}
+
+#close {
+ margin-right: 0;
+}
+%else
+#newaccount,
+#close {
+ margin: 3px;
+}
+%endif
+%endif
+
+/* List Items */
+richlistitem[state="disconnected"] .accountIcon {
+ opacity: 0.3;
+}
+richlistitem[state="connecting"] .accountIcon,
+richlistitem[state="disconnected"][selected="true"] .accountIcon {
+ opacity: 0.7;
+}
+richlistitem[state="disconnected"]:not([selected="true"]) {
+ color: GrayText;
+}
+
+richlistitem[error="true"] .accountName {
+ color: rgb(150, 0, 0);
+}
+
+%ifndef XP_MACOSX
+/* When the error message was too long, the buttons were too small */
+richlistitem .account-buttons button {
+ min-height: 2em;
+}
+%endif
+
+richlistitem .account-buttons {
+ margin-top: 2px;
+%ifdef XP_MACOSX
+ margin-left: 35px;
+%else
+ margin-left: 32px;
+%endif
+}
+
+richlistitem[dragover="down"] {
+ border-bottom: 3px solid HighLight;
+}
+richlistitem[dragover="up"] {
+ border-top: 3px solid HighLight;
+}
+
+.error {
+ color: rgb(200, 0, 0);
+ margin-left: 6px;
+}
+.accountName {
+ font-weight: bold;
+}
+
+.accountIcon {
+ width: 32px;
+ max-width: 32px;
+ height: 32px;
+ max-height: 32px;
+}
+
+.accountStateIcon {
+ -moz-margin-start: 16px;
+ margin-top: 16px;
+ width: 16px;
+ height: 16px;
+}
+
+richlistitem[state="connected"] .accountStateIcon {
+ list-style-image: url("chrome://chat/skin/available-16.png");
+}
+richlistitem[state="disconnected"] .accountStateIcon {
+ list-style-image: url("chrome://chat/skin/offline-16.png");
+}
+richlistitem[state="connecting"] .accountStateIcon {
+ list-style-image: url("chrome://global/skin/icons/loading_16.png");
+}
+richlistitem[error="true"] .accountStateIcon {
+ list-style-image: url("chrome://global/skin/icons/warning-16.png");
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..433c25e1a39d85ef3c4545b7e0f6dd0c6baab724
GIT binary patch
literal 236
zc$@+302BX-P)<h;3K|Lk000e1NJLTq000mG000UI1^@s6y}sU@00029Nkl<ZC{vw~
zy$ZrG6h=EZ2)?jm27epH$=4BG9r_L;R*J=%8c47q*L=Z%f=$H>r$ag4p)?_)1h-uA
z(VS13SvsZ|aNuI&w|Fqddg)^NP)bqP!GVhny#@O2rGX%&jDmxU&DVesB1&hVs;*I5
z1McS-Yb}-KB?=t49|6w!AOwoy93=#>@d5WaLkDelo0F7x%JbviacHBiZ{Eemu||N5
mX*^o%p9ns-2xPC?KV(lIVEPvZT@;D{0000<MNUMnLSTaKI$&D>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ab78613132887820625051be89da9a706e4b0cfe
GIT binary patch
literal 645
zc$@)+0($+4P)<h;3K|Lk000e1NJLTq001BW000&U1^@s6p;?|p0006^Nkl<ZNQuRi
z&5Ke|7{+f+?u1q?%6<EiOp#_G`L(`&3}(6za-j<sB8r<RC<rEE{sf~d6f-0<+7QvM
zAf1`Q0%>T5`CwuwsA-(l2-^D$=Ufie*twlWi=TSWeSWWx_nxaZ8jUpI_xsO;!{NJ$
zM52{SrCRB9x+#J+oI?g#?m3;#X`j!x7zhNKR)7On<AXw>(EVI4H&>}t>eXu1_!Bsn
z&*$f;#0>Y`Zuf&oBr;0{4Js-HvT)#<1>*7eLa9`$m&;{i9LP|%$vv0L<qigewPZ5+
zIFrd3G9U{Fu2`T|EEWwJkmVlmcsv(kvDnjWHfzX$EIF6pnnR+|XtPi#7&0I$7Vvt#
zCv{z4pxa}}fGjySvw+F~)gPdI2~}^Q@+MN<#LAD6>SL_@N22;iriu6Qf1ugy=Z>I*
zv&17}m-uoFyDWn&_Zr04G0t(oX_y6u!{IC~d?vR4!VYEUd4c}H0SfF$c)!hoD;C(I
z#SKZe*(IFlEWN#UcsS_N=S>U#CLFlpEkJ=!l5FuSK-e4e&vZ6e*56os{&EVgSYVy#
zNwO{!(5{AcI~}iC@YklU-#87IfB6LQk?2Z-tc@37GgdA5tK^&z3tT2X5G#_r9}EUp
zeksti;P<!(agsLR3wrMmZzSn3XHwY2@94NK;Ud#D3(#(?vBg&wX~X4%_I~Ww*__v7
z9Gq+K_xn%G0(4Mgmu1N!D{%RsTX&`}e*3=nkk*&SILpY~ynWAU7N8dgasD512>ala
f<SYlv9(g|jcN*i;D;K{P00000NkvXXu0mjf3lB0;
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f53fdda5733fa693ddfc6073c8092afc8edb5505
GIT binary patch
literal 1371
zc$@)S1*H0kP)<h;3K|Lk000e1NJLTq002M$001lq1^@s6)nC5<000FdNkl<Zc-rNc
zS!i5U9LCQ`GpV-42gRx-Rv%geVrhL)C@qLsCR?+RgzWnc+4t=|Bw(sm5c(>;GwI9)
zp%f9dVj4+onx-~2N{C5FlNj4K(<V|w;`hM>CbwrMkj#HZ@Zpz%IcL7#x!;_7=0=s2
zl<2U5bCs2q{k65VuDZH9b2sp_%wQHX{kVEDkMlzcoph_>;$j^&4Gj(M_V#vHS67$O
z-QB$__*rH!i<vrCO-+rdafm}F-Kwal$jVtX<mv3}baGNKU=}l(ZS_@GSDP5;ypTdC
z-KwCVU>jv+Wj!q|Ev}A^4kMT_li3y@OXx*8ZjNKOaIPqH&_yTQeNPooRaIrQwY70#
zP+=ys>97z1qRY$6dm0-X2YlQjYiMd}a#d7RT!8Z=u&cbhJYQIV+1lD_NWg45{1Ax}
zE@FXBDL=Du@t5E_u;o=bIXT<F1hcuh*^q$QbOgYG`|^sApNHN69Or$VDmy#d7oGto
zwxS^cv*`%HD=5h$<;PF58;&EsPL-LNxsB4&QnS9k-jIOVbOc}@=6D4C9ysj2PL+|7
z;R}D8`H)~pz-)^z?0%J=p1zI3!a@`Gp&<dYExxe(RcdOgFZ=TI^F92zl7QK8*y-{E
zPi9lf&upttrKF_z@-ilQa1a>+umCq4N9giLZf>qA<!83lr;?MCeQ{usS8!Sz0`MVd
z0FLu?`GF_1DdlIj)u$2@6Ss)OJ#i6_hfe&LWJthl96XocIzXoep3J6{pV?NQN=QhE
z0MWP~day+Xa8PieA|RXhp$o1HaGnHqpnTxL#CalaW?Oyy(~ED#jf;0-`*WL$LI+)R
z(j6ZkuY5^LO6uWwu)WM=w$;azkk98_SV*Ch?zp%(W#KHoDG$b-L3BBp$!x2SCn2BD
z*-%KKlkV8qSf!yhEiKKRm6hefygfOX!7OI#Tq-6erWdCne;z^#opAR7rNIWy;TGw~
zJl7r^E@m)`nL3wpI2`|L)aK@9IQh>OU<0|}d$0%|?2<)hFpHUfTwj5QoF8Hy((SK+
zPr#pG2`uiBC1x>G>+%*ACLZV(lmh+$_k#>GQ#8J1j)#e5T>)3UgY!Y=KC`X9l}C@h
z^X`%b0cW7KEWv&KsRA}OHh#zJoCM6a`l3&qe(SQ+lZwTB!^Lr)F!QUcYd5Z5`#R^;
zdmp^5+W`w;Mu-KgFXG^<QQ-KyXB;Qi*8U#Bd$WT6*(Xo_8IMoSeuqxFbp_0WX(8q{
z1=zrT5H)uD=O!*v&_8>3VzL9Squ@EZbp_0UDIw-G1#DsK>;LQw7b)nU{pjP*--qj&
zEx)dS8StwRGyV!7AI7G>DD6+nDtU?CKm|;LUxb(rPymUL_QPS{sembPSBR+{3b0B0
z=?GLn1o#cy5rWx~{t6%=@T))tyyo31w}oK#8#@#*Dd?XJSit)FdX~4TQ6cWYQLsY+
z_XPd-0u}Hqp46^+C;lYFC>-D7^-zEUCItNxx&rLr6!-#+f?;9kFu`fC-%<c~A;(7q
zyd%uk6>u4hd8I#wh!HyJwifW$%8G~M5>9683K$1B!o;|>fWe{RV!VF~3<c3M#7t)E
z3K#=Fgo!ar0VHZ^Y57x(-SjSea1Z%|%wQHXnQbkATh8=0J{n?f(XA=q(7_j8e{<yK
zSk>dlt6$>K9Nw*ipJfKKn8|Ew0Tdn&GfKl@0ncGxu&#ipFkU>}$`8+jqu|&c@{cit
dS-e;s{{ly`>rF95EY<)3002ovPDHLkV1jTLmG=Mu
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ced958ebbe39646e15fef004e6c1a5bb3f2f21f5
GIT binary patch
literal 425
zc$@*L0apHrP)<h;3K|Lk000e1NJLTq000mG000&U1^@s6$*LTD0004SNkl<ZIE|gt
zT}#4X7zW@M#E$v{=6QdiqwFZ?w{;RhK_5i1nn_}2t0sPoRf;(0&=f^5ORbO&^C%}i
zJ&&klTlLO^3+KE0zR`&c02nz8WxU51TI4)l?njggM3m|e6`*^Rq3pQF#uq|38;hpu
zpz3Y7&A-^9d(reGU{<vZ1m)sqGTQ`2YyF8b!Dz8>890**5YIeup{!-#^vVGFzRrcR
zQv+Lq;u0@)kklF%QOW~$<|YH1M~M|tG9a9&aPeanJFCNijf2?QULe&BTo>@+l(<lK
zKag%xmj;qTI5#|Wf;!Y?>$^Ad_K6BR{yRsgL*2=*Fe~PsUl_tS9wed;djCadl<`;w
z27^He58hDwAFr5|>;_tR@XV=g_Z4WM&Z%WL&_GpAji~{=aG@G{;6z#X_kkr;Mh2&n
zX`0L9|AG%6U;<xrD9b4~>iAf%X9{?sp|nF9b=gO^D~vvt?vO!UdIny!I3w>D%N<S~
T8or7A00000NkvXXu0mjf^CG#N
new file mode 100644
--- /dev/null
+++ b/im/themes/alert.css
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.alertText[clickable="true"] {
+ color: -moz-initial;
+ text-decoration: none;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/blist-aero.css
@@ -0,0 +1,79 @@
+% This Source Code Form is subject to the terms of the Mozilla Public
+% License, v. 2.0. If a copy of the MPL was not distributed with this
+% file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+%include blist.css
+
+/* This applies only if Glass is available. */
+@media all and (-moz-windows-compositor) {
+ #blistWindow {
+ -moz-appearance: -moz-win-borderless-glass;
+ background: transparent;
+ }
+
+ #blistMenubar > menu:-moz-window-inactive,
+ #displayName[usingDefault]:not([editing]) {
+ color: GrayText;
+ text-shadow: 0 0 1px Menu,
+ 0 0 1px Menu,
+ 0 0 2px Menu,
+ 0 0 5px Menu;
+ }
+}
+
+/* Our fallback for Aero Basic: set the background color appropriately. */
+@media not all and (-moz-windows-compositor) {
+ #blistWindow:-moz-system-metric(windows-default-theme) {
+ background-color: rgb(185, 209, 234);
+ }
+ #blistWindow:-moz-system-metric(windows-default-theme):-moz-window-inactive {
+ background-color: rgb(215, 228, 242);
+ }
+}
+
+/* Used by both Aero themes */
+@media all and (-moz-windows-theme: aero) {
+ #blistWindow-statusbar {
+ -moz-appearance: none;
+ background-color: rgba(255, 255, 255, 0.8);
+ border-radius: 0 0 5px 5px;
+ border: 1px solid rgba(0, 0, 0, 0.25);
+ }
+
+ #status {
+ -moz-appearance: none;
+ background: transparent;
+ border: none;
+ }
+
+ /* This thing has a border we need to remove. */
+ #mainToolbox {
+ -moz-appearance: none;
+ background-color: rgba(255, 255, 255, 0.8);
+ border-radius: 5px 5px 0 0;
+ border: 1px solid rgba(0, 0, 0, 0.25);
+ }
+
+ #statusArea {
+ -moz-appearance: none;
+ margin-left: 1px;
+ margin-right: 1px;
+ border: none;
+ }
+
+ #buddyListMsg {
+ border-left: 1px solid rgba(0, 0, 0, 0.25);
+ border-right: 1px solid rgba(0, 0, 0, 0.25);
+ background-color: rgba(255, 255, 255, 0.8);
+ }
+
+ .listboxHeader {
+ background-color: transparent;
+ background-image: -moz-linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05));
+ border: none;
+ }
+
+ #contactsHeader {
+ border-top: 1px solid rgba(0, 0, 0, 0.12);
+ }
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/blist.css
@@ -0,0 +1,458 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://instantbird/skin/status.css");
+
+#buddyListMsg {
+ overflow-y: auto;
+ background-color: -moz-Field;
+}
+
+#listSpacer {
+ background-color: -moz-Field;
+}
+
+richlistbox {
+ margin: 0 0;
+ -moz-appearance: none;
+}
+
+.listboxHeader {
+ margin: 0 0;
+ padding: 2px 5px;
+ border-style: none;
+ -moz-appearance: none;
+%ifdef XP_MACOSX
+ background-color: -moz-mac-chrome-active;
+ background-image: -moz-linear-gradient(rgba(255,255,255,.43), rgba(255,255,255,0));
+ border-bottom: 1px solid rgba(0, 0, 0, 0.57);
+}
+
+.listboxHeader:-moz-window-inactive {
+ background-color: -moz-mac-chrome-inactive;
+ border-bottom-color: rgba(0, 0, 0, 0.32);
+%else
+ background-color: -moz-Dialog;
+%ifdef XP_WIN
+ background-image: -moz-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+%else
+ background-image: -moz-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0));
+%endif
+%endif
+}
+
+#contactsHeader {
+%ifdef XP_MACOSX
+ border-top: 1px solid rgb(66, 66, 66);
+}
+
+#contactsHeader:-moz-window-inactive {
+ border-top-color: rgb(137, 137, 137);
+%else
+%ifdef XP_UNIX
+ border-top: 1px solid rgba(0, 0, 0, 0.1);
+%else
+ border-top: none;
+%endif
+%endif
+}
+
+%ifdef XP_UNIX
+%ifndef XP_MACOSX
+#convsHeader {
+ border-top: 1px solid rgba(0, 0, 0, 0.12);
+}
+%endif
+%endif
+
+.convUnreadCount,
+.convUnreadTargetedCount {
+ font-weight: bold;
+ font-size: 11px;
+}
+
+.convUnreadCount {
+ color: hsl(0, 100%, 27%);
+ background-color: hsl(0, 100%, 87%);
+ padding: 0 7px;
+ border-radius: 50px;
+ margin: 1px 3px;
+}
+
+.convUnreadTargetedCount {
+ color: hsl(210, 100%, 27%);
+ background-color: hsl(210, 100%, 87%);
+ padding: 0 5px 0 7px;
+ border-radius: 50px 0 0 50px;
+ margin: 1px 0 1px 3px;
+}
+
+.convUnreadTargetedCount:not([value="0"]) + .convUnreadCount {
+ border-radius: 0 50px 50px 0;
+ margin-left: 0;
+ padding-left: 5px;
+}
+
+conv,
+contact,
+group {
+ padding: 0 2px;
+}
+
+conv,
+contact,
+buddy {
+ height: 20px; /* 16+2+2px for the protocol icon, padding top and bottom */
+}
+
+/* The vertical padding directly on the binding would not be animated. */
+.prplBuddyIcon,
+group>* {
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+contact[open] {
+ background: -moz-linear-gradient(45deg, -moz-Dialog, white 20%, white 80%, -moz-Dialog);
+}
+
+#buddylistbox:focus > contact[selected="true"],
+#buddylistbox:focus > group[selected="true"],
+#convlistbox:focus > conv[selected="true"] {
+ background: -moz-Dialog;
+ color: -moz-DialogText;
+}
+
+:-moz-any(contact, buddy)[droptarget] {
+ background: Highlight;
+}
+
+contact[droptarget] .contact-hbox,
+buddy[droptarget] {
+ color: HighlightText;
+}
+
+contact[droptarget] > buddy[dummy] {
+ background: Highlight;
+ color: HighlightText;
+}
+
+.contactStatusText,
+.convStatusText,
+.buddyStatusText {
+ color: GrayText;
+}
+
+.contactDisplayName,
+.contactStatusText,
+.convDisplayName,
+.convStatusText,
+.buddyDisplayName,
+.buddyStatusText {
+ margin: 0;
+}
+
+.buddyDisplayName {
+ -moz-margin-start: 2px;
+}
+
+.contact-hbox,
+.conv-hbox {
+ margin: 2px 0;
+ -moz-margin-start: 2px;
+ min-height: 16px;
+ overflow-x: hidden;
+}
+
+/* Avoid a strange jumping bug when hovering and the startChatBubble appears */
+.contact-vbox {
+ min-height: 40px;
+}
+
+.hideGroupButton,
+.startChatBubble,
+.expander-up,
+.expander-down {
+ margin: 0 3px;
+ padding: 0;
+ border: none;
+ background: transparent;
+ -moz-binding: url('chrome://global/content/bindings/button.xml#button-image');
+ -moz-appearance: none;
+}
+
+%ifdef XP_UNIX
+%ifndef XP_MACOSX
+%define UNIX_BUT_NOT_MAC
+%endif
+%endif
+
+.hideGroupButton {
+ -moz-margin-end: 0;
+ -moz-stack-sizing: ignore;
+%ifdef UNIX_BUT_NOT_MAC
+ list-style-image: url("moz-icon://stock/gtk-close?size=menu");
+%else
+ list-style-image: url("chrome://global/skin/icons/close.png");
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+.hideGroupButton:hover {
+ -moz-image-region: rect(0, 32px, 16px, 16px);
+}
+.hideGroupButton:hover:active {
+ -moz-image-region: rect(0, 48px, 16px, 32px);
+%endif
+}
+
+.startChatBubble {
+ list-style-image: url('chrome://chat/skin/prpl-generic/icon.png');
+}
+
+.expander-up {
+ list-style-image: url("chrome://instantbird/skin/collapse.png");
+}
+
+.expander-down {
+ list-style-image: url("chrome://instantbird/skin/expand.png");
+}
+
+.contactBuddies {
+ -moz-padding-start: 23px;
+}
+
+.dummyBuddyIcon {
+ margin: 1px 3px;
+ list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.png");
+}
+
+.dummyBuddyLabel {
+ font-style: italic;
+ color: GrayText;
+}
+
+.prplBuddyIcon {
+ margin: 0 3px;
+ width: 16px;
+ max-width: 16px;
+ height: 16px;
+ max-height: 16px;
+}
+
+.protoIcon,
+.statusIcon,
+.dummyBuddyIcon,
+.hideGroupButton,
+.startChatBubble,
+.expander-up,
+.expander-down {
+ width: 16px;
+ height: 16px;
+ min-height: 16px;
+ min-width: 16px;
+}
+
+group label {
+ margin: 0 2px;
+ -moz-margin-end: 0;
+}
+
+.blistDisplayName[status="idle"] {
+ color: GrayText;
+}
+
+contact[state="fading"] :-moz-any(.contactDisplayName, .buddyDisplayName) {
+ color: GrayText;
+ font-style: italic;
+}
+
+group label {
+ font-weight: bold;
+}
+
+%ifdef XP_WIN
+group .twisty {
+ padding-top: 1px;
+ width: 9px; /* The image's width is 9 pixels */
+ height: 9px;
+ -moz-margin-end: 3px;
+ -moz-margin-start: 3px;
+ background: url("chrome://global/skin/tree/twisty-open.png") no-repeat center;
+}
+
+group[closed] .twisty {
+ background: url("chrome://global/skin/tree/twisty-clsd.png") no-repeat center;
+}
+%else
+%ifdef XP_MACOSX
+group .twisty {
+ width: 9px;
+ height: 9px;
+ -moz-margin-end: 3px;
+ -moz-margin-start: 3px;
+ background: url("chrome://global/skin/arrow/arrow-dn-sharp.gif") no-repeat center;
+}
+
+group[closed] .twisty {
+ background: url("chrome://global/skin/arrow/arrow-rit-sharp.gif") no-repeat center;
+}
+%else
+group .twisty {
+ -moz-appearance: treetwistyopen;
+}
+
+group[closed] .twisty {
+ -moz-appearance: treetwisty;
+}
+%endif
+%endif
+
+#updatesMenuItem[loading="true"] {
+ list-style-image: url("chrome://global/skin/icons/loading_16.png");
+}
+
+#statusArea {
+ margin: 0 0;
+ padding: 0 0;
+}
+
+#displayName {
+ font-size: large;
+ border-bottom: 1px solid rgba(0,0,0,0.25);
+ margin: 0 0 16px;
+}
+
+#displayName[usingDefault]:not([editing]) {
+ color: GrayText;
+}
+
+#userIcon {
+ border: 2px solid rgba(0,0,0,0.15);
+ border-radius: 5px;
+ overflow: hidden;
+ max-width: 48px;
+ max-height: 48px;
+ width: 48px;
+ height: 48px;
+}
+
+#userIcon[src=""] {
+ background-image: url("chrome://instantbird/skin/userIcon.png");
+ background-size: contain;
+ background-repeat: no-repeat;
+}
+
+#userIcon:focus,
+#userIcon:hover {
+ border-color: rgba(0,0,0,0.35);
+ background-color: rgba(0,0,0,0.35);
+ opacity: .4;
+}
+
+#statusTypeIcon {
+ margin: 32px 0 0 32px;
+ width: 16px;
+ height: 16px;
+ min-height: 16px;
+ min-width: 16px;
+ -moz-appearance: none;
+ background-color: transparent;
+ border: none;
+}
+
+#statusImageStack,
+#displayNameAndstatusMessageStack {
+ margin: 3px 2px;
+}
+
+#statusTypeIcon dropmarker {
+ display: none;
+}
+
+%ifdef XP_WIN
+#statusTypeIcon .button-box {
+ padding: 0 0;
+ border: none;
+}
+%endif
+
+#statusTypeIcon[status="available"],
+#statusTypeAvailable {
+ list-style-image: url('chrome://chat/skin/available-16.png');
+}
+
+#statusTypeIcon[status="unavailable"],
+#statusTypeIcon[status="away"],
+#statusTypeUnavailable {
+ list-style-image: url('chrome://chat/skin/away-16.png');
+}
+
+#statusTypeIcon[status="offline"],
+#statusTypeIcon[status="invisible"],
+#statusTypeOffline {
+ list-style-image: url('chrome://chat/skin/offline-16.png');
+}
+
+#statusTypeIcon[status="idle"] {
+ list-style-image: url('chrome://chat/skin/idle-16.png');
+}
+
+%ifdef XP_MACOSX
+#statusMessage {
+ margin: 32px 0 0;
+ min-height: 16px;
+}
+
+#statusMessage[editing] {
+ margin: 29px 2px 0 -4px;
+}
+
+#displayName[editing] {
+ margin-left: -4px;
+}
+%else
+#statusMessage {
+ margin: 32px 0 0;
+}
+
+#statusMessage[editing] {
+%ifdef XP_WIN
+ margin: 30px 0 1px -2px;
+%else
+ margin: 30px -2px -2px -4px;
+%endif
+}
+
+#displayName[editing] {
+%ifdef XP_WIN
+ margin-left: -2px;
+%else
+ margin-left: -4px;
+ margin-right: -2px;
+%endif
+ margin-bottom: 18px;
+}
+%endif
+
+#statusMessage:-moz-focusring:not([editing]) {
+%ifdef XP_MACOSX
+ margin: 30px -2px -1px -22px;
+ border: 2px solid rgba(0,0,0,0.15);
+ border-radius: 5px;
+%else
+ margin: 31px -1px -1px -21px;
+ border: dotted 1px -moz-dialogtext;
+%endif
+ padding-left: 20px; /* 16px for the statusTypeIcon and 4px from the margins on the two stacks */
+}
+
+#displayName:-moz-focusring:not([editing]) {
+%ifdef XP_MACOSX
+ margin: -1px -1px 16px -2px;
+ border: 2px solid rgba(0,0,0,0.15);
+ border-radius: 5px;
+%else
+ margin: -1px -1px 17px;
+ border: dotted 1px -moz-dialogtext;
+%endif
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/buddytooltip.css
@@ -0,0 +1,82 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://instantbird/skin/status.css");
+
+.displayNameMessageBox {
+ margin-top: 2px;
+}
+
+.statusTypeIcon {
+ margin: 32px 4px 0 0;
+ max-width: 16px;
+ max-height: 16px;
+ min-width: 16px;
+ min-height: 16px;
+ width: 16px;
+ height: 16px;
+ -moz-appearance: none;
+ background-color: transparent;
+ border: none;
+}
+
+.statusTypeIcon[left][status="chat"] {
+ list-style-image: url('chrome://chat/skin/chat-left-16.png') !important;
+}
+
+.userIcon[src] + .statusTypeIcon {
+ margin-left: 32px;
+}
+
+.tooltipBuddies {
+ margin-left: -3px;
+}
+
+.tooltipDisplayName {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.25);
+ font-size: large;
+ margin: 2px 4px 4px 0 !important;
+ padding-right: 20px;
+}
+
+.tooltipMessage {
+ margin: 30px 5px 4px 0 !important;
+}
+
+.tooltipMessage[noTopic] {
+ font-style: italic;
+}
+
+.tooltipProtoIcon {
+ margin: 4px 0 0 -20px;
+ max-width: 16px;
+ max-height: 16px;
+ width: 16px;
+ height: 16px;
+}
+
+.tooltipProtoIcon[status="unknown"] {
+ opacity: 0.7;
+}
+
+.tooltipRows label {
+ margin-left: 0 !important;
+}
+
+.tooltipSeparator {
+ margin-left: 3px;
+}
+
+.userIcon {
+ border: 2px solid rgba(0, 0, 0, 0.15);
+ border-radius: 5px;
+ overflow: hidden;
+ margin-right: 4px;
+ max-width: 48px;
+ max-height: 48px;
+ min-width: 48px;
+ min-height: 48px;
+ width: 48px;
+ height: 48px;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c688dc6ed87696a89c118e05d9a39ca8f2a101e9
GIT binary patch
literal 238
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5XCV09yhE&{2`t$$4J+o><XQPwB2eu6lCO&3ND%AL`Dp0R@
zlvUyExx07oW;;k6Y3oX43eZ`QD5vmkzG?Qg>Io(s%{LSbSIBf#HO=CbYzqI}#L9g@
zV!q-DwuIs`6OP9p_}UonS>zllko3^?kyj213S&sB&d9K5e6-gi@HlfXr{szojtX@Q
ilM-aka`P}SvN2e@Kl(3GD_RD08-u5-pUXO@geCy3t5R72
new file mode 100644
--- /dev/null
+++ b/im/themes/conversation-aero.css
@@ -0,0 +1,23 @@
+% This Source Code Form is subject to the terms of the Mozilla Public
+% License, v. 2.0. If a copy of the MPL was not distributed with this
+% file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+%include conversation.css
+
+@media all and (-moz-windows-theme: aero) {
+ /* Move participant list one pixel to the right to avoid double borders. */
+ .conv-nicklist {
+ margin-right: -1px;
+ }
+
+ /* Fix broken styling (bug 616) with a border over the input box. */
+ .conv-bottom {
+ border-top: 1px solid rgba(0, 0, 0, 0.25);
+ }
+
+ .alltargets-item-icon-stack {
+ -moz-appearance: none;
+ padding-left: 5px;
+ padding-right: 8px;
+ }
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/conversation.css
@@ -0,0 +1,363 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.browser {
+ margin: 0 0;
+}
+
+.conv-bottom, .conv-nicklist {
+ margin: 0 0;
+}
+
+.conv-top {
+ min-height: 115px;
+}
+
+.conv-top-info {
+ margin: 0 0;
+ padding: 0 0;
+ border-style: none;
+ -moz-appearance: none;
+%ifdef XP_MACOSX
+ background-color: -moz-mac-chrome-active;
+ background-image: -moz-linear-gradient(rgba(255,255,255,.43), rgba(255,255,255,0));
+ border-bottom: 1px solid rgba(0, 0, 0, 0.57);
+}
+
+.conv-top-info:-moz-window-inactive {
+ background-color: -moz-mac-chrome-inactive;
+ border-bottom-color: rgba(0, 0, 0, 0.32);
+%else
+ background-color: -moz-Dialog;
+%ifdef XP_WIN
+ background-image: -moz-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+%else
+ background-image: -moz-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0));
+%endif
+%ifndef XP_WIN
+ border-bottom: 1px solid ThreeDShadow;
+%else
+ border-bottom: none;
+%endif
+%endif
+}
+
+.userIcon {
+ border: 2px solid rgba(0,0,0,0.15);
+ border-radius: 5px;
+ overflow: hidden;
+ max-width: 48px;
+ max-height: 48px;
+ width: 48px;
+ height: 48px;
+}
+
+.userIcon:not([src]) {
+ display: none;
+}
+
+.userIcon[src=""] {
+ background-image: url("chrome://instantbird/skin/userIcon.png");
+ background-size: contain;
+ background-repeat: no-repeat;
+}
+
+.statusTypeIcon {
+ margin: 0 0;
+ width: 16px;
+ height: 16px;
+ min-height: 16px;
+ min-width: 16px;
+ -moz-appearance: none;
+ background-color: transparent;
+ border: none;
+}
+
+.statusMessage {
+ margin: 0 0 !important;
+%ifdef XP_MACOSX
+ min-height: 16px;
+%endif
+}
+
+.statusMessage[noTopic]:not([editing]),
+.statusMessageWithDash[noTopic] {
+ font-style: italic;
+}
+
+.alltargets-button {
+ min-width: 16px;
+ padding: 0 0;
+ -moz-appearance: none;
+ border: none;
+}
+
+.alltargets-button > .toolbarbutton-text,
+.alltargets-button > .toolbarbutton-menu-dropmarker {
+ display: none;
+}
+
+.alltargets-button[type="menu"] {
+ cursor: pointer;
+}
+
+.alltargets-item[selected="true"] {
+ font-weight: bold;
+}
+
+.status-overlay-icon[status="away"],
+.status-overlay-icon[status="unavailable"] {
+ list-style-image: url('chrome://chat/skin/away.png');
+}
+
+.status-overlay-icon[status="idle"] {
+ list-style-image: url('chrome://chat/skin/idle.png');
+}
+
+.status-overlay-icon[status="mobile"] {
+ list-style-image: url('chrome://chat/skin/mobile.png');
+}
+
+.status-overlay-icon[status="offline"] {
+ list-style-image: url('chrome://chat/skin/offline.png');
+}
+
+.status-overlay-icon[status="unknown"] {
+ list-style-image: url('chrome://chat/skin/unknown.png');
+}
+
+@media all and (min-height: 251px) {
+ .statusImageStack,
+ .displayNameAndstatusMessageStack {
+ margin: 2px 2px;
+ }
+
+ .statusMessage {
+ margin-top: 32px !important;
+ }
+
+ .statusMessage[editing] {
+%ifdef XP_MACOSX
+ margin: 29px 0 -1px -4px !important;
+%else
+%ifdef XP_WIN
+ margin: 28px 0 -1px -2px !important;
+%else
+ margin: 29px 0 -3px -4px !important;
+%endif
+%endif
+ }
+
+ .displayName {
+ font-size: large;
+ border-bottom: 1px solid rgba(0,0,0,0.25);
+ margin: 0 0 16px !important;
+ padding-right: 20px;
+ }
+
+ .prplIcon {
+ margin: 0 1px 16px -16px !important;
+ }
+
+ .statusTypeIcon {
+ margin: 32px 0 0;
+ }
+
+ .userIcon[src] + .statusTypeIcon {
+ margin-left: 32px;
+ }
+}
+
+@media all and (max-height: 250px) {
+ .conv-top-info {
+ -moz-box-align: baseline;
+ }
+
+ .displayName,
+ .statusMessageWithDash {
+ margin: 2px 0 !important;
+ }
+
+ .prplIcon {
+ margin: 1px 3px !important;
+ padding: 0 0;
+ }
+
+ .statusMessage[editing] {
+%ifdef XP_WIN
+ margin: -1px 2px 0px 8px !important;
+%else
+ margin: -3px 0 -1px 9px !important;
+%endif
+ }
+
+ .statusTypeIcon {
+ margin: 1px 3px;
+ }
+}
+
+.conv-messages {
+ min-width: 150px;
+%ifndef XP_MACOSX
+%ifndef XP_WIN
+ border-bottom: solid 1px GrayText;
+%else
+ border: 1px solid rgba(0, 0, 0, 0.25);
+ border-left: none;
+ border-right: none !important;
+%endif
+%endif
+}
+
+%ifndef XP_MACOSX
+.conv-messages[chat] {
+ border-right: solid 1px GrayText;
+}
+%endif
+
+.conv-textbox {
+ margin: 0 0;
+ padding: 0 0;
+ -moz-box-sizing: content-box;
+}
+%ifndef XP_MACOSX
+
+.conv-textbox > .textbox-input-box {
+ background: inherit;
+}
+%endif
+
+%ifdef XP_MACOSX
+grippy {
+ display: none;
+}
+%endif
+
+.splitter {
+ margin: 0;
+ border-style: none;
+%ifdef XP_MACOSX
+ min-height: 2px;
+ background: -moz-linear-gradient(top, rgba(0,0,0,0.35), transparent);
+%else
+ height: 3px;
+ background: transparent;
+%endif
+}
+
+#conv-toolbar {
+ border-style: none;
+}
+
+.listcell-label {
+ font-weight: bold;
+ -moz-padding-start: 1px;
+%ifdef XP_MACOSX
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.4);
+%endif
+}
+
+.listcell-icon {
+ min-width: 16px;
+ margin: 0 2px;
+}
+
+%ifdef XP_MACOSX
+.conv-nicklist-header {
+ -moz-appearance: treeheadercell;
+ margin-right: -1px;
+}
+
+%endif
+.conv-nicklist-header-label {
+%ifdef XP_MACOSX
+ -moz-margin-start: 3px !important;
+ margin-top: 1px !important;
+ margin-bottom: 0 !important;
+%else
+ font-weight: bold;
+ -moz-margin-start: 0 !important;
+%endif
+ -moz-margin-end: 2px !important;
+}
+
+%ifdef XP_MACOSX
+.conv-textbox {
+ padding: 3px;
+ border: none;
+ -moz-appearance: none;
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.7);
+}
+
+.conv-textbox[focused="true"] {
+ box-shadow: inset 0 0 2px 1px rgba(40, 120, 212, 0.7),
+ 0 0 4px 1px rgb(40, 120, 212),
+ inset 0 1px 2px rgba(0, 0, 0, 0.7);
+}
+
+.splitter.conv-chat {
+ background: -moz-linear-gradient(top, #404040, rgba(0,0,0,0.35));
+ min-width: 1px;
+ width: 1px;
+}
+
+.splitter.conv-chat:-moz-window-inactive {
+ background: rgba(0,0,0,0.35);
+}
+
+.splitter.conv-chat[state="collapsed"] {
+ width: 3px;
+}
+
+.conv-nicklist {
+ -moz-appearance: none;
+ background: -moz-linear-gradient(top, #d2d8e2, #e8e8e8);
+ width: 160px;
+ border: 0px;
+}
+
+.conv-nicklist:-moz-window-inactive {
+ background: #e8e8e8;
+}
+%endif
+%ifdef XP_WIN
+.splitter.conv-chat {
+ border-left: 1px solid rgba(0, 0, 0, 0.25);
+}
+
+/* Splitter style change above somehow made it smaller, fix this here: */
+grippy {
+ margin: 0 1px;
+}
+%endif
+
+.listitem-iconic[inactive] > .listcell-iconic > .listcell-icon {
+ opacity: 0.45;
+}
+
+.listitem-iconic[inactive][selected] > .listcell-iconic > .listcell-icon {
+ opacity: 0.7;
+}
+
+.listitem-iconic[inactive] > .listcell-iconic > .listcell-label {
+ color: GrayText !important;
+ font-weight: normal;
+}
+
+.listitem-iconic[inactive][selected] > .listcell-iconic > .listcell-label {
+%ifdef MACOSX
+ color: -moz-DialogText !important;
+%else
+ color: -moz-cellhighlighttext !important;
+%endif
+}
+
+.conv-nicklist:focus > .listitem-iconic[inactive][selected] > .listcell-iconic > .listcell-label {
+ color: HighlightText !important;
+}
+
+.alltargets-item-icon {
+ min-width: 16px;
+ min-height: 16px;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/engineManager.css
@@ -0,0 +1,16 @@
+%if 0
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+%endif
+
+#engineList treechildren::-moz-tree-image(engineName) {
+ -moz-margin-end: 4px;
+ -moz-margin-start: 1px;
+ width: 16px;
+ height: 16px;
+}
+
+#engineList treechildren::-moz-tree-row {
+ height: 20px !important;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..246d5ee8bd00d75dfe1aecb18a70a4c898b4f2b7
GIT binary patch
literal 240
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5XCV9FzhE&{2`t$$4J+o><VTI%Zh9ln`&M+VGZ>Z20sBb*g
zcw|mv1e;cwK!<!osso$DM)MBtLz~miR`Eai&1}do^1Jy+!Y75T2DK;H7HBj{3Gp6^
zIP!O+WJBWRCRXkP678oAcn)N7*qyxrqV&%0;AxP)boFYfTuWglTVl;i29eT70pGlr
jXvm)PoT<YgkialSLrLc9_Uli9u4C|Y^>bP0l+XkK;_6sL
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aca3a925c657dd79b38c6a760024536c70fb8304
GIT binary patch
literal 658
zc$@)}0&V??P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00076Nkl<Zc-ocG
zUuaTM7y$6^{?RjUD}%vaODcnC3Yu1<k^QmJg5D!~?x}}SIdjrBHn;u|JqA6*8e6cS
zAc!qr)*zOvv6}snscBQJO{Z;a_bOiRy{Drx(Kr3zp2OkX?{~iQ9STT%egXZG1WrW(
zM3yo_Flo60SD}ueii2+qgcE1<93UM@--0=>Pg!2yuN!)QJyjR*X#(6d1%t8z5X~OI
zqu<=h&L*y!ivuRBzsU{Q=5wL=JJ%6vN4oc5ShCwMFs`TbxXW&VCQWngQ6!n6C`fN+
z@zl&xG7?{N{PDWSD?p#eBk`<`S^6!&<xUF#s{)LR=g}k=lVm7;a|=Py_a*#Dk(Gg!
zsXO@!aR1@3WV4-SdY=X0lKmKnz=9$ZfGS^xLkz@XtJpj1f0f?gyEzR?MBny6)fGHa
zN5?6q|9J>55`dQ&P?S<DfFTV+G={~mq0J8q!5d9TJ<ju4NX-t^0`2W5nZbz&be=WC
zzdTJUAV9eU&~gl<lk24lGNc0S9xk!``c^GqJ#J-2CRgCR%>?Nj1?7CI)C(0uL(482
z{NE$u{9^bqO+#P!jU!(T6ij9lJMuD)yUv+`RU-;l{L&)=Vrkgg&MMP0{!}!+)|2qM
z$7%qh(ZF^;31F34P3}!s_9`!l%TP8aDq=y(#HL-Xm7neoc?zrfR#v|^Biz2}Y=%0c
zrUHYpjs5u}AQAvI1d!x?q*=i>!%;*4NtWe<PDgL75uin*(TwU3AIe64MR)T&e~kc{
sMgTR(X{-n#tym}s0xx_dfLIUkA79!Q8NFY+nE(I)07*qoM6N<$g6xJUM*si-
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2e89f37b3111a2a77345cd4bbfbbd77a017713e4
GIT binary patch
literal 667
zc$@*70%ZM(P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007FNkl<Zc-o~>
z%Zt)+5dZ!(TU}60^8uSA6e8k_AjE@+T|}W%2gP+4sR$O9Zr!9mU=JQ52qG3CH<d0y
zAPENDM8y>k<*K9}v^@C0_gkC!kqfp&3k?k4=X^dhpBc((wUYla>TduJheIxt$xc_R
z6{%LMcf#Rt<<bC5CX?ZIyI<ODwu9MhMq;tpt3V)dxL7QfmjbZc?YA@<%~y-XvW4ep
zG&;`b^Xf<>^8KFx5PV%E68V6AkI(1RcZEWMBoc||sZ{C+_LB<$`}_NkV9(-kID1?!
z_oi4Z-qC8c=byUWE=i};q~GtKLP=w=w+sej>i7GPDPX$d^?GMUqmfV)b)lT;bc%tr
zLm+*gOeUn=ZWEu+$3g%$2=>NgGVOxu8^I{xU@#!V;gF0*BLX54>`JrQB;|7X1ne;a
zTm`|j27@7}*XwV~<#MuIE@>8Y48(OlpVRlPR*O_Bl@HLB1K?;<AQ}aze6?Dwgfia2
zDi;ccG&`n?zGm)pI;2*sRg%f1Bb&{B1He8lA_&3)G%kQWfJ|OXBoaCZ9a%AW&7R3*
zo<KX_gI*nYU!AuRK(?Gt=Mj|il*i-I0qbBi+@l`3T<%3E6nX~d>Bbyj79Nl1lS-w!
z$7ZwX5>RP0Xf3|e<rIs>&(J;_0L(T3;M2Ct<@%yfDDGm*8jVI9QvQf<0)gN@=yDB#
zOQljW7z|o^z20yGz-%^4p$k8OX<V<@kI&A|PC%$CzUg$j8%m{eS1Of01ZFmfxD$`Z
zfBabj&b<Wha0I}SVf1?>IN;kjt>7q11AyoZegWbfT$8+@YV!a9002ovPDHLkV1oRD
BFXR9K
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ff4f21f9a6115db4829bb0ac6094ee1cd78c603d
GIT binary patch
literal 2185
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
LNkvXXu0mjf;i4xR
new file mode 100644
--- /dev/null
+++ b/im/themes/instantbird-aero.css
@@ -0,0 +1,48 @@
+% This Source Code Form is subject to the terms of the Mozilla Public
+% License, v. 2.0. If a copy of the MPL was not distributed with this
+% file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+%include instantbird.css
+
+/* This applies only if Glass is available. */
+@media all and (-moz-windows-compositor) {
+ #convWindow {
+ -moz-appearance: -moz-win-borderless-glass;
+ background: transparent;
+ }
+}
+
+/* Our fallback for Aero Basic: set the background color appropriately. */
+@media not all and (-moz-windows-compositor) {
+ #convWindow:-moz-system-metric(windows-default-theme) {
+ background-color: rgb(185, 209, 234);
+ }
+ #convWindow:-moz-system-metric(windows-default-theme):-moz-window-inactive {
+ background-color: rgb(215, 228, 242);
+ }
+}
+
+/* Use for both Aero themes. */
+@media all and (-moz-windows-theme: aero) {
+ #convWindow-statusbar {
+ -moz-appearance: none;
+ border-radius: 0 0 5px 5px;
+ border: 1px solid rgba(0, 0, 0, 0.25);
+ background: rgba(255, 255, 255, 0.8);
+ }
+
+ #statusbar-display {
+ -moz-appearance: none;
+ border-radius: 0 0 5px 5px;
+ border: none;
+ background: transparent;
+ }
+
+ #conversations {
+ padding-top: 2px;
+ border-radius: 5px 5px 0 0;
+ border: 1px solid rgba(0, 0, 0, 0.25);
+ border-bottom: none;
+ background-color: rgba(255, 255, 255, 0.8);
+ }
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/instantbird.css
@@ -0,0 +1,143 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://instantbird/skin/status.css");
+
+tabbox {
+ margin: 0 0;
+}
+
+tabpanels {
+ -moz-appearance: none;
+}
+
+statusbar {
+ min-height: 16px;
+}
+
+@media all and (max-height: 350px) {
+ statusbar {
+ display: none;
+ }
+}
+
+%ifdef XP_WIN
+statusbarpanel {
+ -moz-appearance: none;
+ border: none;
+}
+%endif
+
+#statusbar-display-end > .statusbarpanel-text {
+ -moz-margin-end: 0;
+}
+
+#statusbar-display-end[error] {
+ color: red;
+ font-weight: bold;
+}
+
+%ifndef XP_MACOSX
+notification > hbox {
+ border: none !important;
+ border-bottom: 1px solid ThreeDShadow !important;
+}
+%endif
+
+/* Tab colors */
+tab[unread],
+.alltabs-item[unread] {
+ color: red !important;
+}
+
+tab[typing],
+.alltabs-item[typing] {
+ color: green !important;
+}
+
+tab[typed],
+.alltabs-item[typed] {
+ color: orange !important;
+}
+
+tab[attention],
+.alltabs-item[attention] {
+ color: blue !important;
+}
+
+/* Tab icons */
+.tabbrowser-tab,
+.alltabs-item > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://mozapps/skin/places/defaultFavicon.png");
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+.tabbrowser-tab[type="conversation"],
+.alltabs-item[type="conversation"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/unknown-16.png");
+}
+
+.tabbrowser-tab[type="addons"],
+.alltabs-item[type="addons"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://mozapps/skin/extensions/extensionGeneric-16.png");
+}
+
+.tabbrowser-tab[type="newtab"],
+.alltabs-item[type="newtab"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://instantbird/skin/newConversation.png");
+}
+
+.tabbrowser-tab {
+ text-align: center;
+}
+
+.tabbrowser-tab[chat],
+.alltabs-item[chat] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/chat-16.png") !important;
+}
+.tabbrowser-tab[chat][status="left"],
+.alltabs-item[chat][status="left"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/chat-left-16.png") !important;
+}
+.tabbrowser-tab[chat][prpl="prpl-twitter"],
+.alltabs-item[chat][prpl="prpl-twitter"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://prpl-twitter/skin/icon.png") !important;
+}
+.tabbrowser-tab[chat][prpl="prpl-twitter"][status="left"],
+.alltabs-item[chat][prpl="prpl-twitter"][status="left"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://prpl-twitter/skin/icon-left.png") !important;
+}
+
+.tabbrowser-tab[status="offline"],
+.alltabs-item[status="offline"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/offline-16.png") !important;
+}
+.tabbrowser-tab[status="available"],
+.alltabs-item[status="available"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/available-16.png") !important;
+}
+.tabbrowser-tab[status="away"],
+.tabbrowser-tab[status="unavailable"],
+.alltabs-item[status="away"] > .menu-iconic-left > .menu-iconic-icon,
+.alltabs-item[status="unavailable"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/away-16.png") !important;
+}
+.tabbrowser-tab[status="idle"],
+.alltabs-item[status="idle"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/idle-16.png") !important;
+}
+.tabbrowser-tab[status="mobile"],
+.alltabs-item[status="mobile"] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/mobile-16.png") !important;
+}
+
+.tabbrowser-tab[typing],
+.alltabs-item[typing] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/typing-16.png") !important;
+}
+
+.tabbrowser-tab[typed],
+.alltabs-item[typed] > .menu-iconic-left > .menu-iconic-icon {
+ list-style-image: url("chrome://chat/skin/typed-16.png") !important;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/jar.mn
@@ -0,0 +1,340 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+instantbird.jar:
+#ifndef XP_WIN
+% skin instantbird classic/1.0 %skin/classic/instantbird/
+#else
+% skin instantbird classic/1.0 %skin/classic/instantbird/ os=WINNT osversion<6
+% skin instantbird classic/1.0 %skin/classic/instantbird/ os!=WINNT
+% skin instantbird classic/1.0 %skin/classic/aero/instantbird/ os=WINNT osversion>=6
+#endif
+* skin/classic/instantbird/accounts.css
+ skin/classic/instantbird/alert.css
+% style chrome://global/content/alerts/alert.xul chrome://instantbird/skin/alert.css
+* skin/classic/instantbird/richlistbox.css
+* skin/classic/instantbird/accountWizard.css
+* skin/classic/instantbird/newtab.css
+ skin/classic/instantbird/newConversation.png
+ skin/classic/instantbird/founder.png
+ skin/classic/instantbird/operator.png
+ skin/classic/instantbird/half-operator.png
+ skin/classic/instantbird/voice.png
+* skin/classic/instantbird/blist.css
+ skin/classic/instantbird/buddytooltip.css
+* skin/classic/instantbird/conversation.css
+* skin/classic/instantbird/engineManager.css
+* skin/classic/instantbird/instantbird.css
+ skin/classic/instantbird/menulist.css
+ skin/classic/instantbird/menus.css
+ skin/classic/instantbird/status.css
+* skin/classic/instantbird/viewlog.css
+ skin/classic/instantbird/newMessage.png
+ skin/classic/instantbird/expand.png
+ skin/classic/instantbird/collapse.png
+ skin/classic/instantbird/userIcon.png
+ skin/classic/instantbird/multiUserIcon.png
+#ifdef XP_UNIX
+#ifdef XP_MACOSX
+ skin/classic/instantbird/tag.png (tag-mac.png)
+ skin/classic/instantbird/tag@2x.png (tag-mac@2x.png)
+ skin/classic/instantbird/actionicon-tab.png (actionicon-tab-mac.png)
+ skin/classic/instantbird/actionicon-tab@2x.png (actionicon-tab-mac@2x.png)
+#else
+ skin/classic/instantbird/tag.png (tag-linux.png)
+ skin/classic/instantbird/actionicon-tab.png (actionicon-tab-linux.png)
+#endif
+#else
+ skin/classic/instantbird/tag.png (tag-win.png)
+ skin/classic/instantbird/actionicon-tab.png (actionicon-tab-win.png)
+#endif
+#ifdef XP_UNIX
+#ifdef XP_MACOSX
+ skin/classic/instantbird/preferences/Options.png (preferences-pinstripe/Options.png)
+ skin/classic/instantbird/preferences/alwaysAsk.png (preferences-pinstripe/alwaysAsk.png)
+ skin/classic/instantbird/preferences/application.png (preferences-pinstripe/application.png)
+ skin/classic/instantbird/preferences/applications.css (preferences-pinstripe/applications.css)
+ skin/classic/instantbird/preferences/preferences.css (preferences-pinstripe/preferences.css)
+ skin/classic/instantbird/preferences/saveFile.png (preferences-pinstripe/saveFile.png)
+#else
+ skin/classic/instantbird/preferences/Options.png (preferences-gnomestripe/Options.png)
+ skin/classic/instantbird/preferences/alwaysAsk.png (preferences-gnomestripe/alwaysAsk.png)
+ skin/classic/instantbird/preferences/applications.css (preferences-gnomestripe/applications.css)
+ skin/classic/instantbird/preferences/preferences.css (preferences-gnomestripe/preferences.css)
+ skin/classic/instantbird/preferences/mail.png (preferences-gnomestripe/mail.png)
+#endif
+#else
+ skin/classic/instantbird/preferences/Options.png (preferences-winstripe/Options.png)
+ skin/classic/instantbird/preferences/alwaysAsk.png (preferences-winstripe/alwaysAsk.png)
+ skin/classic/instantbird/preferences/application.png (preferences-winstripe/application.png)
+ skin/classic/instantbird/preferences/applications.css (preferences-winstripe/applications.css)
+ skin/classic/instantbird/preferences/preferences.css (preferences-winstripe/preferences.css)
+ skin/classic/instantbird/preferences/saveFile.png (preferences-winstripe/saveFile.png)
+ skin/classic/instantbird/preferences/mail.png (preferences-winstripe/mail.png)
+#endif
+#ifdef XP_UNIX
+#ifdef XP_MACOSX
+* skin/classic/instantbird/tabbrowser.css (tabbrowser-pinstripe/tabbrowser.css)
+ skin/classic/instantbird/tabbrowser/newtab.png (tabbrowser-pinstripe/newtab.png)
+ skin/classic/instantbird/tabbrowser/newtab@2x.png (tabbrowser-pinstripe/newtab@2x.png)
+ skin/classic/instantbird/tabbrowser/tab-arrow-left.png (tabbrowser-pinstripe/tab-arrow-left.png)
+ skin/classic/instantbird/tabbrowser/tab-arrow-left@2x.png (tabbrowser-pinstripe/tab-arrow-left@2x.png)
+ skin/classic/instantbird/tabbrowser/tab-arrow-right.png (tabbrowser-pinstripe/tab-arrow-right.png)
+ skin/classic/instantbird/tabbrowser/tab-arrow-right@2x.png (tabbrowser-pinstripe/tab-arrow-right@2x.png)
+ skin/classic/instantbird/tabbrowser/tab-overflow-border.png (tabbrowser-pinstripe/tab-overflow-border.png)
+ skin/classic/instantbird/tabbrowser/tab-top-hover-active.png (tabbrowser-pinstripe/tab-top-hover-active.png)
+ skin/classic/instantbird/tabbrowser/tab-top-hover-active@2x.png (tabbrowser-pinstripe/tab-top-hover-active@2x.png)
+ skin/classic/instantbird/tabbrowser/tab-top-normal-active.png (tabbrowser-pinstripe/tab-top-normal-active.png)
+ skin/classic/instantbird/tabbrowser/tab-top-normal-active@2x.png (tabbrowser-pinstripe/tab-top-normal-active@2x.png)
+ skin/classic/instantbird/tabbrowser/tab-top-selected-active.png (tabbrowser-pinstripe/tab-top-selected-active.png)
+ skin/classic/instantbird/tabbrowser/tab-top-selected-active@2x.png (tabbrowser-pinstripe/tab-top-selected-active@2x.png)
+ skin/classic/instantbird/tabbrowser/tabDragIndicator.png (tabbrowser-pinstripe/tabDragIndicator.png)
+ skin/classic/instantbird/tabbrowser/tabDragIndicator@2x.png (tabbrowser-pinstripe/tabDragIndicator@2x.png)
+ skin/classic/instantbird/tabbrowser/tabbar-top-bg-active.png (tabbrowser-pinstripe/tabbar-top-bg-active.png)
+ skin/classic/instantbird/tabbrowser/tabbar-top-bg-inactive.png (tabbrowser-pinstripe/tabbar-top-bg-inactive.png)
+ skin/classic/instantbird/tabbrowser/alltabs-box-bkgnd-icon.png (tabbrowser-pinstripe/alltabs-box-bkgnd-icon.png)
+ skin/classic/instantbird/lion/tabbrowser/alltabs-box-bkgnd-icon.png (tabbrowser-pinstripe/alltabs-box-bkgnd-icon-lion.png)
+ skin/classic/instantbird/tabbrowser/alltabs-box-bkgnd-icon@2x.png (tabbrowser-pinstripe/alltabs-box-bkgnd-icon-lion@2x.png)
+#else
+* skin/classic/instantbird/tabbrowser.css (tabbrowser-gnomestripe/tabbrowser.css)
+ skin/classic/instantbird/tabbrowser/tab.png (tabbrowser-gnomestripe/tab.png)
+ skin/classic/instantbird/tabbrowser/tab-overflow-border.png (tabbrowser-gnomestripe/tab-overflow-border.png)
+ skin/classic/instantbird/tabbrowser/tabDragIndicator.png (tabbrowser-gnomestripe/tabDragIndicator.png)
+#endif
+#else
+* skin/classic/instantbird/tabbrowser.css (tabbrowser-winstripe/tabbrowser.css)
+ skin/classic/instantbird/tabbrowser/newtab.png (tabbrowser-winstripe/newtab.png)
+ skin/classic/instantbird/tabbrowser/tab.png (tabbrowser-winstripe/tab.png)
+ skin/classic/instantbird/tabbrowser/tab-arrow-left.png (tabbrowser-winstripe/tab-arrow-left.png)
+ skin/classic/instantbird/tabbrowser/tab-overflow-border.png (tabbrowser-winstripe/tab-overflow-border.png)
+ skin/classic/instantbird/tabbrowser/tabDragIndicator.png (tabbrowser-winstripe/tabDragIndicator.png)
+ skin/classic/instantbird/tabbrowser/mainwindow-dropdown-arrow.png (tabbrowser-winstripe/mainwindow-dropdown-arrow.png)
+#endif
+#ifdef XP_WIN
+* skin/classic/aero/instantbird/accounts.css (accounts-aero.css)
+ skin/classic/aero/instantbird/alert.css
+* skin/classic/aero/instantbird/richlistbox.css
+* skin/classic/aero/instantbird/accountWizard.css
+ skin/classic/aero/instantbird/founder.png
+ skin/classic/aero/instantbird/operator.png
+ skin/classic/aero/instantbird/half-operator.png
+ skin/classic/aero/instantbird/voice.png
+* skin/classic/aero/instantbird/blist.css (blist-aero.css)
+ skin/classic/aero/instantbird/buddytooltip.css
+* skin/classic/aero/instantbird/conversation.css (conversation-aero.css)
+* skin/classic/aero/instantbird/engineManager.css
+* skin/classic/aero/instantbird/instantbird.css (instantbird-aero.css)
+ skin/classic/aero/instantbird/menulist.css
+ skin/classic/aero/instantbird/menus.css
+* skin/classic/aero/instantbird/newtab.css
+ skin/classic/aero/instantbird/status.css
+* skin/classic/aero/instantbird/viewlog.css
+ skin/classic/aero/instantbird/newMessage.png
+ skin/classic/aero/instantbird/expand.png
+ skin/classic/aero/instantbird/collapse.png
+ skin/classic/aero/instantbird/userIcon.png
+ skin/classic/aero/instantbird/multiUserIcon.png
+ skin/classic/aero/instantbird/newConversation.png
+ skin/classic/aero/instantbird/tag.png (tag-aero.png)
+ skin/classic/aero/instantbird/actionicon-tab.png (actionicon-tab-win.png)
+ skin/classic/aero/instantbird/preferences/Options.png (preferences-winstripe/Options-aero.png)
+ skin/classic/aero/instantbird/preferences/alwaysAsk.png (preferences-winstripe/alwaysAsk-aero.png)
+ skin/classic/aero/instantbird/preferences/application.png (preferences-winstripe/application-aero.png)
+ skin/classic/aero/instantbird/preferences/applications.css (preferences-winstripe/applications.css)
+ skin/classic/aero/instantbird/preferences/preferences.css (preferences-winstripe/preferences.css)
+ skin/classic/aero/instantbird/preferences/saveFile.png (preferences-winstripe/saveFile-aero.png)
+ skin/classic/aero/instantbird/preferences/mail.png (preferences-winstripe/mail-aero.png)
+* skin/classic/aero/instantbird/tabbrowser.css (tabbrowser-winstripe/tabbrowser.css)
+ skin/classic/aero/instantbird/tabbrowser/newtab.png (tabbrowser-winstripe/newtab.png)
+ skin/classic/aero/instantbird/tabbrowser/tab.png (tabbrowser-winstripe/tab.png)
+ skin/classic/aero/instantbird/tabbrowser/tab-arrow-left.png (tabbrowser-winstripe/tab-arrow-left.png)
+ skin/classic/aero/instantbird/tabbrowser/tab-overflow-border.png (tabbrowser-winstripe/tab-overflow-border.png)
+ skin/classic/aero/instantbird/tabbrowser/tabDragIndicator.png (tabbrowser-winstripe/tabDragIndicator.png)
+ skin/classic/aero/instantbird/tabbrowser/mainwindow-dropdown-arrow.png (tabbrowser-winstripe/mainwindow-dropdown-arrow.png)
+#endif
+% skin instantbird-sounds classic/1.0 %skin/classic/instantbird/sounds/
+ skin/classic/instantbird/sounds/alert.wav (sounds/alert.wav)
+ skin/classic/instantbird/sounds/login.wav (sounds/login.wav)
+ skin/classic/instantbird/sounds/logout.wav (sounds/logout.wav)
+ skin/classic/instantbird/sounds/receive.wav (sounds/receive.wav)
+ skin/classic/instantbird/sounds/send.wav (sounds/send.wav)
+% skin instantbird-emoticons classic/1.0 %skin/classic/instantbird/smileys/
+ skin/classic/instantbird/smileys/theme.js (smileys/theme.js)
+ skin/classic/instantbird/smileys/angry.png (smileys/angry.png)
+ skin/classic/instantbird/smileys/confused.png (smileys/confused.png)
+ skin/classic/instantbird/smileys/cool.png (smileys/cool.png)
+ skin/classic/instantbird/smileys/cry.png (smileys/cry.png)
+ skin/classic/instantbird/smileys/embarrassed.png (smileys/embarrassed.png)
+ skin/classic/instantbird/smileys/grin.png (smileys/grin.png)
+ skin/classic/instantbird/smileys/heart.png (smileys/heart.png)
+ skin/classic/instantbird/smileys/manga_annoyed.png (smileys/manga_annoyed.png)
+ skin/classic/instantbird/smileys/manga_embarrassed.png (smileys/manga_embarrassed.png)
+ skin/classic/instantbird/smileys/manga_smile.png (smileys/manga_smile.png)
+ skin/classic/instantbird/smileys/manga_stunned.png (smileys/manga_stunned.png)
+ skin/classic/instantbird/smileys/manga_tired.png (smileys/manga_tired.png)
+ skin/classic/instantbird/smileys/sad.png (smileys/sad.png)
+ skin/classic/instantbird/smileys/shocked.png (smileys/shocked.png)
+ skin/classic/instantbird/smileys/slant.png (smileys/slant.png)
+ skin/classic/instantbird/smileys/slant2.png (smileys/slant2.png)
+ skin/classic/instantbird/smileys/smile.png (smileys/smile.png)
+ skin/classic/instantbird/smileys/sp_laugh.png (smileys/sp_laugh.png)
+ skin/classic/instantbird/smileys/straight_face.png (smileys/straight_face.png)
+ skin/classic/instantbird/smileys/tongue.png (smileys/tongue.png)
+ skin/classic/instantbird/smileys/wink.png (smileys/wink.png)
+% skin instantbird-messagestyles classic/1.0 %skin/classic/instantbird/messages/
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_0.png (messages/bubbles/Bitmaps/indicator_0.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_0_alt.png (messages/bubbles/Bitmaps/indicator_0_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_10.png (messages/bubbles/Bitmaps/indicator_10.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_100.png (messages/bubbles/Bitmaps/indicator_100.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_100_alt.png (messages/bubbles/Bitmaps/indicator_100_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_10_alt.png (messages/bubbles/Bitmaps/indicator_10_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_110.png (messages/bubbles/Bitmaps/indicator_110.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_110_alt.png (messages/bubbles/Bitmaps/indicator_110_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_120.png (messages/bubbles/Bitmaps/indicator_120.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_120_alt.png (messages/bubbles/Bitmaps/indicator_120_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_130.png (messages/bubbles/Bitmaps/indicator_130.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_130_alt.png (messages/bubbles/Bitmaps/indicator_130_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_140.png (messages/bubbles/Bitmaps/indicator_140.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_140_alt.png (messages/bubbles/Bitmaps/indicator_140_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_150.png (messages/bubbles/Bitmaps/indicator_150.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_150_alt.png (messages/bubbles/Bitmaps/indicator_150_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_160.png (messages/bubbles/Bitmaps/indicator_160.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_160_alt.png (messages/bubbles/Bitmaps/indicator_160_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_170.png (messages/bubbles/Bitmaps/indicator_170.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_170_alt.png (messages/bubbles/Bitmaps/indicator_170_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_180.png (messages/bubbles/Bitmaps/indicator_180.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_180_alt.png (messages/bubbles/Bitmaps/indicator_180_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_190.png (messages/bubbles/Bitmaps/indicator_190.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_190_alt.png (messages/bubbles/Bitmaps/indicator_190_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_20.png (messages/bubbles/Bitmaps/indicator_20.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_200.png (messages/bubbles/Bitmaps/indicator_200.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_200_alt.png (messages/bubbles/Bitmaps/indicator_200_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_20_alt.png (messages/bubbles/Bitmaps/indicator_20_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_210.png (messages/bubbles/Bitmaps/indicator_210.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_210_alt.png (messages/bubbles/Bitmaps/indicator_210_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_220.png (messages/bubbles/Bitmaps/indicator_220.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_220_alt.png (messages/bubbles/Bitmaps/indicator_220_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_230.png (messages/bubbles/Bitmaps/indicator_230.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_230_alt.png (messages/bubbles/Bitmaps/indicator_230_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_240.png (messages/bubbles/Bitmaps/indicator_240.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_240_alt.png (messages/bubbles/Bitmaps/indicator_240_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_250.png (messages/bubbles/Bitmaps/indicator_250.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_250_alt.png (messages/bubbles/Bitmaps/indicator_250_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_260.png (messages/bubbles/Bitmaps/indicator_260.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_260_alt.png (messages/bubbles/Bitmaps/indicator_260_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_270.png (messages/bubbles/Bitmaps/indicator_270.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_270_alt.png (messages/bubbles/Bitmaps/indicator_270_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_280.png (messages/bubbles/Bitmaps/indicator_280.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_280_alt.png (messages/bubbles/Bitmaps/indicator_280_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_290.png (messages/bubbles/Bitmaps/indicator_290.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_290_alt.png (messages/bubbles/Bitmaps/indicator_290_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_30.png (messages/bubbles/Bitmaps/indicator_30.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_300.png (messages/bubbles/Bitmaps/indicator_300.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_300_alt.png (messages/bubbles/Bitmaps/indicator_300_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_30_alt.png (messages/bubbles/Bitmaps/indicator_30_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_310.png (messages/bubbles/Bitmaps/indicator_310.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_310_alt.png (messages/bubbles/Bitmaps/indicator_310_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_320.png (messages/bubbles/Bitmaps/indicator_320.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_320_alt.png (messages/bubbles/Bitmaps/indicator_320_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_330.png (messages/bubbles/Bitmaps/indicator_330.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_330_alt.png (messages/bubbles/Bitmaps/indicator_330_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_340.png (messages/bubbles/Bitmaps/indicator_340.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_340_alt.png (messages/bubbles/Bitmaps/indicator_340_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_350.png (messages/bubbles/Bitmaps/indicator_350.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_350_alt.png (messages/bubbles/Bitmaps/indicator_350_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_40.png (messages/bubbles/Bitmaps/indicator_40.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_40_alt.png (messages/bubbles/Bitmaps/indicator_40_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_50.png (messages/bubbles/Bitmaps/indicator_50.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_50_alt.png (messages/bubbles/Bitmaps/indicator_50_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_60.png (messages/bubbles/Bitmaps/indicator_60.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_60_alt.png (messages/bubbles/Bitmaps/indicator_60_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_70.png (messages/bubbles/Bitmaps/indicator_70.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_70_alt.png (messages/bubbles/Bitmaps/indicator_70_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_80.png (messages/bubbles/Bitmaps/indicator_80.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_80_alt.png (messages/bubbles/Bitmaps/indicator_80_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_90.png (messages/bubbles/Bitmaps/indicator_90.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_90_alt.png (messages/bubbles/Bitmaps/indicator_90_alt.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/indicator_grey.png (messages/bubbles/Bitmaps/indicator_grey.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/minus-hover.png (messages/bubbles/Bitmaps/minus-hover.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/minus.png (messages/bubbles/Bitmaps/minus.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/plus-hover.png (messages/bubbles/Bitmaps/plus-hover.png)
+ skin/classic/instantbird/messages/bubbles/Bitmaps/plus.png (messages/bubbles/Bitmaps/plus.png)
+ skin/classic/instantbird/messages/bubbles/bubbles.svg (messages/bubbles/bubbles.svg)
+ skin/classic/instantbird/messages/bubbles/Footer.html (messages/bubbles/Footer.html)
+ skin/classic/instantbird/messages/bubbles/Incoming/Content.html (messages/bubbles/Incoming/Content.html)
+ skin/classic/instantbird/messages/bubbles/Incoming/Context.html (messages/bubbles/Incoming/Context.html)
+ skin/classic/instantbird/messages/bubbles/Incoming/NextContent.html (messages/bubbles/Incoming/NextContent.html)
+ skin/classic/instantbird/messages/bubbles/Info.plist (messages/bubbles/Info.plist)
+ skin/classic/instantbird/messages/bubbles/main.css (messages/bubbles/main.css)
+ skin/classic/instantbird/messages/bubbles/NextStatus.html (messages/bubbles/NextStatus.html)
+ skin/classic/instantbird/messages/bubbles/Status.html (messages/bubbles/Status.html)
+ skin/classic/instantbird/messages/bubbles/Variants/Blue_-_Green_Alternating.css (messages/bubbles/Variants/Blue_-_Green_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Blue_-_Green.css (messages/bubbles/Variants/Blue_-_Green.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Blue_-_Pink_Alternating.css (messages/bubbles/Variants/Blue_-_Pink_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Blue_-_Pink.css (messages/bubbles/Variants/Blue_-_Pink.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Blue_-_Red_Alternating.css (messages/bubbles/Variants/Blue_-_Red_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Blue_-_Red.css (messages/bubbles/Variants/Blue_-_Red.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Green_-_Blue_Alternating.css (messages/bubbles/Variants/Green_-_Blue_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Green_-_Blue.css (messages/bubbles/Variants/Green_-_Blue.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Green_-_Purple_Alternating.css (messages/bubbles/Variants/Green_-_Purple_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Green_-_Purple.css (messages/bubbles/Variants/Green_-_Purple.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Green_-_Red_Alternating.css (messages/bubbles/Variants/Green_-_Red_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Green_-_Red.css (messages/bubbles/Variants/Green_-_Red.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Blue_Alternating.css (messages/bubbles/Variants/Grey_-_Blue_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Blue.css (messages/bubbles/Variants/Grey_-_Blue.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Pink_Alternating.css (messages/bubbles/Variants/Grey_-_Pink_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Ping.css (messages/bubbles/Variants/Grey_-_Pink.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Purple_Alternating.css (messages/bubbles/Variants/Grey_-_Purple_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Purple.css (messages/bubbles/Variants/Grey_-_Purple.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Red_Alternating.css (messages/bubbles/Variants/Grey_-_Red_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Grey_-_Red.css (messages/bubbles/Variants/Grey_-_Red.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Pink_-_Blue_Alternating.css (messages/bubbles/Variants/Pink_-_Blue_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Pink_-_Blue.css (messages/bubbles/Variants/Pink_-_Blue.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Pink_-_Purple_Alternating.css (messages/bubbles/Variants/Pink_-_Purple_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Pink_-_Purple.css (messages/bubbles/Variants/Pink_-_Purple.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Purple_-_Green_Alternating.css (messages/bubbles/Variants/Purple_-_Green_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Purple_-_Green.css (messages/bubbles/Variants/Purple_-_Green.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Purple_-_Pink_Alternating.css (messages/bubbles/Variants/Purple_-_Pink_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Purple_-_Pink.css (messages/bubbles/Variants/Purple_-_Pink.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Red_-_Blue_Alternating.css (messages/bubbles/Variants/Red_-_Blue_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Red_-_Blue.css (messages/bubbles/Variants/Red_-_Blue.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Red_-_Green_Alternating.css (messages/bubbles/Variants/Red_-_Green_Alternating.css)
+ skin/classic/instantbird/messages/bubbles/Variants/Red_-_Green.css (messages/bubbles/Variants/Red_-_Green.css)
+ skin/classic/instantbird/messages/dark/Footer.html (messages/dark/Footer.html)
+ skin/classic/instantbird/messages/dark/Incoming/Content.html (messages/dark/Incoming/Content.html)
+ skin/classic/instantbird/messages/dark/Incoming/Context.html (messages/dark/Incoming/Context.html)
+ skin/classic/instantbird/messages/dark/Incoming/NextContent.html (messages/dark/Incoming/NextContent.html)
+ skin/classic/instantbird/messages/dark/Incoming/NextContext.html (messages/dark/Incoming/NextContext.html)
+ skin/classic/instantbird/messages/dark/Info.plist (messages/dark/Info.plist)
+ skin/classic/instantbird/messages/dark/main.css (messages/dark/main.css)
+ skin/classic/instantbird/messages/dark/Status.html (messages/dark/Status.html)
+ skin/classic/instantbird/messages/dark/Variants/Blue.css (messages/dark/Variants/Blue.css)
+ skin/classic/instantbird/messages/dark/Variants/Green.css (messages/dark/Variants/Green.css)
+ skin/classic/instantbird/messages/dark/Variants/Purple.css (messages/dark/Variants/Purple.css)
+ skin/classic/instantbird/messages/dark/Variants/Red.css (messages/dark/Variants/Red.css)
+ skin/classic/instantbird/messages/dark/Variants/Yellow.css (messages/dark/Variants/Yellow.css)
+ skin/classic/instantbird/messages/papersheets/Bitmaps/information.png (messages/papersheets/Bitmaps/information.png)
+ skin/classic/instantbird/messages/papersheets/Bitmaps/minus.png (messages/papersheets/Bitmaps/minus.png)
+ skin/classic/instantbird/messages/papersheets/Bitmaps/plus.png (messages/papersheets/Bitmaps/plus.png)
+ skin/classic/instantbird/messages/papersheets/Footer.html (messages/papersheets/Footer.html)
+ skin/classic/instantbird/messages/papersheets/Incoming/Content.html (messages/papersheets/Incoming/Content.html)
+ skin/classic/instantbird/messages/papersheets/Incoming/Context.html (messages/papersheets/Incoming/Context.html)
+ skin/classic/instantbird/messages/papersheets/Incoming/NextContent.html (messages/papersheets/Incoming/NextContent.html)
+ skin/classic/instantbird/messages/papersheets/Info.plist (messages/papersheets/Info.plist)
+ skin/classic/instantbird/messages/papersheets/main.css (messages/papersheets/main.css)
+ skin/classic/instantbird/messages/papersheets/NextStatus.html (messages/papersheets/NextStatus.html)
+ skin/classic/instantbird/messages/papersheets/Status.html (messages/papersheets/Status.html)
+ skin/classic/instantbird/messages/papersheets/Variants/White.css (messages/papersheets/Variants/White.css)
+ skin/classic/instantbird/messages/simple/Incoming/Content.html (messages/simple/Incoming/Content.html)
+ skin/classic/instantbird/messages/simple/Incoming/Context.html (messages/simple/Incoming/Context.html)
+ skin/classic/instantbird/messages/simple/Incoming/NextContext.html (messages/simple/Incoming/NextContext.html)
+ skin/classic/instantbird/messages/simple/Info.plist (messages/simple/Info.plist)
+ skin/classic/instantbird/messages/simple/main.css (messages/simple/main.css)
+ skin/classic/instantbird/messages/simple/Status.html (messages/simple/Status.html)
+ skin/classic/instantbird/messages/simple/Variants/Normal.css (messages/simple/Variants/Normal.css)
+ skin/classic/instantbird/messages/simple/Variants/Dark.css (messages/simple/Variants/Dark.css)
+
+#ifdef XP_MACOSX
+% override chrome://instantbird/skin/tabbrowser/alltabs-box-bkgnd-icon.png chrome://instantbird/skin/lion/tabbrowser/alltabs-box-bkgnd-icon.png os=Darwin osversion>=10.7
+#endif
new file mode 100644
--- /dev/null
+++ b/im/themes/menulist.css
@@ -0,0 +1,13 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/* Fix the icons in the menulist by undoing things from menu.css */
+menulist > menupopup > menuitem.menuitem-iconic > .menu-iconic-left {
+ display: -moz-box !important;
+}
+
+menulist > menupopup > menuitem.menuitem-iconic > .menu-iconic-text {
+ margin-left: 2px !important;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/menus.css
@@ -0,0 +1,15 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#statusAvailable {
+ list-style-image: url('chrome://chat/skin/available-16.png');
+}
+
+#statusUnavailable {
+ list-style-image: url('chrome://chat/skin/away-16.png');
+}
+
+#statusOffline {
+ list-style-image: url('chrome://chat/skin/offline-16.png');
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..eb0051de3414dddedc07ff5597a1b79cb7af949f
GIT binary patch
literal 581
zc$@)60=oT)P)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10m4Z{K~y-6rIWF1+dveDzju~Tku2E(TOk;n*tLh)m_R3I5Du9_
z3#Doc#ZV}PE`^MN%pF39luli2ZRt|z7BXhZkUztF$C9xS>pDnIn>0>R_rbv(_ulv3
z@4Y)Q#xS?Vu>ny30Vqwk^FiX+HgE($sWb;9j>Q=BMPL)xg?|4ZA#uEDjQJ)aFVPzM
zeQ+GC`^Ha(!!4!Mp@`J5EC@p=76Fi1(-9HOXk;bEJQjE(B2NKDxeUD?c;0W{DI^Q3
zPLiZ;pe@i<N<9-;${e86Ntejggp=Vg64(=w4p8E{`93rnu(}G4b92>z`hIW_RXp#b
zmCHT2ylJ)4z;gM{e&ql@ot%u%#^bMHt97yHx(`J}bAArCokG;@Llk2SA|e^k{t!jY
zw_*5x$@e2ba2#m2VPyrho(+Mtv6(yzaE^C&Hn-N+_6u6C18FtO%TTXFwR)wxzeb$F
z6p;597QEBl-B-;Z7!)0+C)00|&qJ-2_ACf)eJ7H^G~n%RZ#Q0VY&@@5Do+YpcP<?Z
zh1rm65_6eM4Y;2NgYKhl_eC=Z-rXqY4xsu2Xq(aK2if6XmL*F>BmpjfpVPZvHQQ~2
Tyv%cf00000NkvXXu0mjf{pt1t
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9c5890b792b7265e6fb017ce25a14bb28e341f42
GIT binary patch
literal 658
zc$@)}0&V??P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10uM<<K~y-6rIbx;6Hyd~p9xunB8<4JTmMI;F5S2&_zz0ODs<C@
zbmK-Oh(#(CS{GKLwJU>~l;R?bE<%T(P^^hUOOrH7Q_{3)zUS*+7c&z_V=%1;4&2Y@
zzUQ2KuOgS0B!DtCr2t4Nxu^xaMj;%&0w{{2{0B@`0T@-)cTXlJE&+jy0t1YV!N>>!
zMY(=&e0=4qs)qcE&tr-_J(bk!kVt@G(9-pfZ&Rr|laWXn5a-FE0|PidhRsc|EG!{P
z`ID2$Yjbm-02`3QK!3pinoZC&s8#_)$28Zwrn&M)(_;76)(k+x;EMkab5=q+?YO&1
zNLev$`@NL%t1U#Pq3hpAXJ-o@+&iEj=2@o$xg6~8L!;3*Euk)iNH=x;>E)T3C?E#I
z{8p_x;N9KckZxJo<lf$+8}svVpbm6`{{-1K93DCf0b9!UPO<pn*5cx;T(x=z=zsyp
z!7#&sd>%3xCuEStS}pb<8hsYo+A07ISCQ_VA^(600i_aTvrsNOeW20p?!4Bt@ZHtb
z&p;D61G<2T@7g%9O2x^^!2y^i01`y4-A;YU=c6|l7UG6&w_Hfu4Xf`$2Z_g_)#?qj
z4ddI7qoa-IiNyNLWU}NcXt}PtkiQl!=z(<0di-H~J9c|{x$JR$DlCS03B8<!rl%hQ
sA-8M#00M^l=llh*+)$+F=lv*u0@VFT3dHU_wEzGB07*qoM6N<$g53NhO#lD@
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..17295f54740b8f9707a88985a94bbfff53e922ed
GIT binary patch
literal 592
zc$@)H0<ZmvP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nJH7K~y-6rIWvFQ&AMhKi`|=y}ab*2ewITq_u52m=Fq;LLEX%
zaS#P*RFH~LL>HlBp^iF;gW}}UzD*ZtGD$}l2mc6%?v5f(Li4V}d#ScIZH)&m+{-=Z
zbI$jidu6R<XzK<R!2AcG(BBRR=?1Qa4*>XuAt2pA*4lT1CDIvKX#FFk8x*az9Z7dd
zIk3=zv`6x+@x7g`Wn;`+NfRWJaJdP79smuRjwEbnI~j)dhQtF&D}bRm0&|Oy@qhdF
zA#qTp7lt)!sYx`9F}DQe*a52bXi0|?_I9?~f=x+vpukbf=HS9KR4zi=JHBebd<|Z<
zM|1wGWFj$ha5Fg@1r|q6?N<We_3p>L&tLZ5H*2%|#cXC?lEaVh;J6XQoIFHXYmuZF
z=)Snuu0Fcjd{)lq+JH!VFjIr`laO)-Lm+BwEH4RoyHD1amK&FzXI*D5axhRDhsqR`
zD~GE4Ys4|k0I8gp_CGz{xL+MFt>!b{qWa$?m4dN}sAuO&C%zNKFbD8ASFTO3wXWQr
zDv#dGx=#JT(aR2o9FdraWja9S&BN8k_4&q~>R9RVv2soUnm>T9?QDM|KAg$oWTB)G
e*av?0?|uPd)NcPhlK$}k0000<MNUMnLSTZCMF)8R
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fc54959c86851ae86a9495a66398af4a307b3241
GIT binary patch
literal 596
zc$@)L0;~OrP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10ntfBK~y-6rINjCQ&AYkf6vM7O>&zrF^MJ8&?MH7n)uNwMJv>p
zp(u*cf*%w_i3x(6LuUsOM4TMjjJgPJ;_Bewf8eUKI_WAjIS#oOOKR+g&vXvYdwz%K
zeP3B?*{iyAEP(kBKr%S*3DTt##_|>*#l-F*T{^OsSBOQA6z6H}4$`HQvX(az*IlAC
zXyK8>*(qSH*RC6*mlBf>F6X#Qk^=x})N~}VZrhIS+lz=hlCA(IO`ZjA5oiCO+5qA|
z%JqA;g0&T-sxi8X$N~sMjRrLuXs8QX>)mT2txC)QNrsdlLy40Vn8n*_4<LYf`gNrl
zOGloC98(O8!<?qb9BJ~~_A3PN{`sfRUp{_+edz4OhL>_rNOFJjjR-N)<S~P?k&?9*
zN%Dc==95#Ug;x1dJR5BS@<?)oI#V1cj5itrgU0&t93cAO-O^&Yo_p+$J4XQwA##){
zGRHwGgf?x*mJ$0f1B^xDW3h)HF0EuriJQ@cJ0Fb2B}$$eMP|uT_~)L;hq*v(Y4uoP
z{`T~>^i=$^JMPQ`busphh73gv`7vF<yYb>owR&N4Ia5m9|7)CWfMydgyl&e+@Gm=(
i|5;yBAJ_nX1>SECa%+(ay41V?0000<MNUMnLSTX#`~>d+
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..218351534b0827836816390fbf880251d813247e
GIT binary patch
literal 678
zc$@*I0$KfuP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wYO8K~y-6os`RKQ$ZAmzZ<d$MQCwl-MaJ-a4B}_#)aU*trUvX
zg&RR|;YO^8C=^tPXp52P##T*AEyOOQ(GnY!wDx7vHZ-O0G_RZ7*BlqQ2`RCd=D@(r
znc<t?oO9-A&!txY`ZT`=AR@GDp4wz!{pv|T(=@GpSQn=N=<M!zfBE6L6M&~(pr?mx
zbkK$7(avA!KReWUy2IC~_&BB&B`Z0$_{>vG$`~c<Q!JS53-o^71k`b2s1+qE0Nbqc
zg%{YEC|hmpr%Sze&b*xf96(xu)?okz_Lw5bE@=Q|mF+RB;tWl{`4f6~BWeNyM`!#H
z3_wsMh>#$HpsGG4JC3D3h>%c@%o_!3;Z}EGy#}vc&;+ZQPL37gB>6#}o#q2VUMcx)
z6s<=$yM{*qbtJ6Oc1e?Bh9$n$eYWAOCZk*T9`}U9KprT2{|B<M$gn_?SXGcCdS-Ut
z|LoGl@ZMT62N-|}$dNDuomGA^$0RyA06EB%LZi21PrkoiUIz-UA_H(l<S@*^Cc``_
zX4qg6g#$pPV9ibkmLCMKPt5>DAO}<ci-xlCg0RgBDdMC_U{bD<1*IPtv2=WQWbop6
z*fCYfh3M|HnhM%G$^b>Ob%&|jb6bnK@yWs2vFNL%4Oc<Q9fk|}XVSbikZm~ke|=mF
z`L9Ga-95cQg-r`Tp&qk--^;sz&s|y#00ph}xyA(8?o*^Tj@u~z0$h?vF(cp~q5uE@
M07*qoM6N<$f~qtqf&c&j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4692e1cf9227afe2705e364e09f7cf4bd97b7ba0
GIT binary patch
literal 666
zc$@*60%iS)P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vAa{K~y-6rIgD{RACgre|K;(gkZL_ZT~{+qE^wSMc^iaHdd5D
zn-<X~f)I-y6hu~(p;@#@s!^nck&-lML1mhduW@D^n`Rv6d7s~Daqpd`rlA=-aNv9X
zzVrHyCQo|=Kx;py0f-2jm4H8p-tOK8Xqu+|2dudTfVS3_XO|BjYz6|G1qRr;3xZn+
zXxi@1eS3Phx3&Z;Ep9|K$*v3eEQCkFGAZcB%g1jgk9YL+B>>e(3|$z&`VW{I1INa8
zR6LSOckJjq_X=<TsR#NC22jkyr!Ztv0IFnK!@6blJ{k{)PThZE0s^%&{yWS)3G*|q
zdY6<)(z2cBf_!$An$4AruWd)qM18pbKsC%4y#(=Ph%G`PSG6rdR*9O)>&BI>M@|m{
zsy3`rGAS1v`Bq*sEPH8UZvNul3s;ALEKq9tC&+OixeC!mcdDc~y%M{7;L@#!%gNLR
zU;ri{wPBVCs}We3bzKIDr8A+k1B2K5#@<DNoM({%I3n@~Oey#thxigC6CetJTuGnq
z9}jn*xHs?~$O9XI4p>x_jSEXB-I%PcfMo$7pfZKx<cEdG;Qp=~L#FK%JV?=VtE!-z
zcryg0LV2NRm|y1NYa=&DMu#7~o``!E6g)LN$X}Dz<bw>$?s_rxG1PwTPQvF_SYcDg
zPbkMMc<AJLAm~l43V?$8`dnoKY|j<(wb4fT6TKWq>@5+c3jhEB07*qoM6N<$f&k+h
A?f?J)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bbd8c91b10fe809a704666f53f8ff61bb42e98d4
GIT binary patch
literal 600
zc$@)P0;m0nP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10o6%FK~y-6rPE7m6Hyev@&CE=>Lin7`mi>|Mq{WUW3?}}zMzCG
zq(w0`AeMp;VuE|2OEU{`Bd+`ex)I!oU%-Xn2XO1kjfxA`LX+zvGZ?1E+Im(4=gjYN
z&be2#)*LiK+8RLp2at=u4}^rY9W-wMCYahk64Dl}d5N%^!KXoUe@IB%NAp^Qn+`4w
znt0?e{}t$TTUAl=0%69&W`lc-a~NPaA|iBj%hWx+j&N5Dxelm21=iWbXZ&|<yyEDm
zY2DQot#w62=0wQ`!X$t~u|kdW)KG~j$fNH4x`=Ee1VD~NjB$vQoFQNdZ+E(n0P5kF
zt$J!=<f$^%@i?)-1p=1IQ`mD}2Ed1BA3uG5|LxV$%TqfezP%_S_IJLL!Xr-sqhB^O
zL~D(RNCY~yCud8G&2pHYbnAd*$Z?J;WfpKr4M(6q*r+`da5vvxSuIwlA6sejG=RdO
zNST0TN>nfg7AwgI7-0&qoQ&n&d3SYdtdzawWbGBCzZM6V6PzMoi6azuBLkR3m<@QB
zw&#oUw`Xto$1>Nfv>C*8Sw@E=i588hO&dt9J-;|NyEfApEoC44v7J3YH2^vt-TDE4
mx%SD34(o|X57+^I#<^b?A7}X>?7++b0000<MNUMnLSTY!ApY+F
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..be6c4b2b086aaed21075acc5a4eb4a4569f412d9
GIT binary patch
literal 676
zc$@*G0$crwP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wGC6K~y-6os>;TR8bVie|H*al941@Xxo<UYZXDzCWs)xMO$$b
zwrSU@T1Z9+QOk+aQWB!1a7-j=m1UD6j*iY)sl(`0rq1{H=Dl}M3*Vc@Od99Ffy=#@
z-~FGDd(;hS6M$PPpa4XKTFv7wt|cxX0hCgzcGyuG0q{4~y*zjKlppZa3iLG7N<9rI
zk2-U*{X}>Du{vL+;(fvV9HyC84sr;u@4%(@SWEwf!0AS%)V>v}jBE<P3QN4;AtoiX
zrB~DOeB1rw{Ud-4NHv8i!vIpOGsH8J!~wKfw1%uLyF1+XW$?|_u@WG#cg1(W05qD9
zj55wB8V!JGS+h<33Lz}E%o$m8zN@J>;lkYqcEMcBktV_<vwUWQwcQtljA)6Ja%NX&
zL(c%9_k>kik~k42nBqfu&o=C(_}Gt*Cuf5}AOjS={{xwrd}E$4p>0976n@TZ1o|(I
z^rV(^X}|zVfb0n?QXt9{pLj=>G=OAR@`G=$hwe>3T}S{~N09;8BC-=^WAT+aB22JI
z6pal)DQnJ5_b%KCUU@$O<bX7=1(;N{jTeLji$s_tMi_(QHd)YHDI=7e{58;bemH2C
zbl!m!oUruYE#eK(NrufoIVxDQ>(TV^_=B0DsmHNZM?v0k!-4#>XkHg&8TRei>*c}c
zEu-I^vqFUmiz<FXIcFWdM>heVE3g8fp}IL&SpdrkMO@$Sp!^M?d^RIG4Zpqs0000<
KMNUMnLSTYN?I&db
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..de40ea9eba0e2b29d13c71cb04d26f512df9e01e
GIT binary patch
literal 589
zc$@)E0<!&yP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10m?~4K~y-6rPIM{({L2P@$dU3O_#21I_9=gXt0)1IyN`k4cQPz
z@i3H$RY4pDabyYp1v`5XFXG9+Krezf@gMNuf3T}}x07dK?emZXOJ<#$FPFf3`TX+U
zOGH(<Y(zu~VEzN}()&vx5m6rH6F`;f#gT|eP~IbKSEvvWTnvebDkvWj9=o^%1bBGZ
z{|bb|uqQ^|A=Dil_St8F1%Szjh!ARM>qze+JQGXq1IEW^k3D9Y{au@`IC-e1Lv5>S
zTSS({$OD9V0E6Lna+%B&<Y0Kv7m-7RCBP#SbIh^MIvqNAXVWnPn8Ei!f9lHAYh#;h
zX=0O2x^(gJ&z+YAaP;Qr+sW6H57k@MQ>WtG5E18?V~P~<@v-8vi6N?rh)4qFH(qTt
zTS4oEJMZ=Z@$l%;V~sTm6ec4O4>oDf2Hc&`JKMEh?WH|!UyoneqD6}?UD~v<#}+Hu
zA27iTkjs^F#oaHvgL1R{#3?&Bk$5dGE-S3ip+kelS!4{81apAm>fvf*@#*5j($&&E
zd)i(~>t>jljAUB0k~STnu=RFpxqheqsN5_+|6@DnfMyKLhZ_EXzkK%DNDdo`$Ot$E
bex|u!Y#U}vQ5q9?00000NkvXXu0mjf70m>6
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d95237d37cf86180c99639dfed6f9008366f384e
GIT binary patch
literal 666
zc$@*60%iS)P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vAa{K~y-6os_*xTTvK?pA#KoC>T0v*N*-HPEzRDrO?5_HMo>^
z6}ojPrIbRUW5gPoqEn^ChzR1O4lzMUTJs^8gj6a~)2q3OH}~H2cF4Uk)=Jg)aNwN7
z;W@we<GgB8CIuj>q6$DnxUB{J#YA=DE})cBw}%Ze1VCsw^kwwz=p7(%TVNnUgfL-L
zKs^|FHZmK!7Yg<&z7cGYK_WyLV1T}0-;?pe`21LOY)C0}V}+_Nbpa?*Vw!2%w9$^<
zH!J4k{QdbAzy;(wiRr=sjyPhDIVw~Dw9|5y+%tD}_w(-J#`BFfAaHfYFTemanpJOT
zGytNdrfvNdAtSEr*r#?bJ{+(5aQ}fzFy9Oe(xlm9iyF1d7laeh^22V}?_%ND0-&#i
z^;(4rDN<~***$YDw{);^@G9{zkpNDBR{#G%Ha0nOBuRDzxzaq&9!FOmuf!VVh5=YW
z8;~nuO`2@8%^GVM7yx4aG#8UElJAS3idEp$Q)B_Ih+Kp@IP9=PiWGVBxVRm4r*^g&
zFTPoSx}E|WfB~EVHa%t2F9>_=ktR)s3@ut6vY@TsR`M`?xUl?aIicIy^dL>oE&X?i
zs41C}I`wmPP3OCjH<q&>vP*@Jg?&$f=}pUn{4;6&KFGD)*X3{J#ntiEU)`{st8lo+
zPw2*MCOGpF2zpz)2cY44eXchFj^~Q_^QMjR52Lp^5?CdlsQ>@~07*qoM6N<$g0Z(I
A{r~^~
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d6360fb7bdc1714706ac3dc5df435f2c68cdb3ae
GIT binary patch
literal 602
zc$@)R0;T<lP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10oO@HK~y-6rISl*6Hye$f9GZ%on(@kKCDf#(HLsTSnW%#FDM}k
zX;DlKh^63znBZRM(#%5Kh$}yVZUlGY7jPl?0o=NBqvFD~(B!(v42H3>w*FTa&N;t(
z{^#5)T5ArfHlYSk{{isg^MN33LL1E+fGH;S4`~w$TE9eC^~uttu|G(g&`0wck(&-S
zO&WN(82<`rbvsp2@&aMT!sH$s9A+F~I7CEf>5id$dL7}eq~toF3gp>jopJo%x$%ml
zqG{dL6|HqeMCL@v2ErtOLQ!Ld8s|}oDaifqqq>M}BLsj)LWdaR3@2G4z{B0WYd~#%
zc~~ErNIzAEIvxiuu)s0_1@e2&D+TcJ*@sWx-hX~Ib@}Ly<&P|ii1n54xTGnNC)H0I
zD$!aaA`$`ZvrlTJa&s|sCNp(FJhD_d#{y;2IKv^(A8cgL0GumtH&>^t#m7d*Jl$_u
zQKrZ;0ToIZ1KmmT14b|fm}b^?ufDspl`D<ivU2tc(qD^%%_&Z>L_m=ve?kUe62UCM
zo!`DxoV`7NBYVuhW@OAD&Ko5+9Fnk@ifmdy`r`AoxtX=uMy@paU{^bP0M!7{Zt2bs
o_{+0TD!QyEB0XRS_!-B30TaV#`5ZnK;Q#;t07*qoM6N<$f>o3OX8-^I
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5c10415912a6a17880127256976a9abc1c652f2b
GIT binary patch
literal 677
zc$@*H0$TlvP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wPI7K~y-6os>^VR8bU%zdH>yiIPMMZQHVats)581Q8^-Xe(~Q
zHtkwf3&{u}YB^C_N`jOWj)^3#vdkO?XB>5`)M0cgQ|JHq=Dl}M3*U@mHZ<db1NUAo
z-~FBQyZ5Sgxg`Kzbw>e+2nP*Uad0(u;~1cnQU`}MaU6iU=K5D>?q8?}Tn7cZ+GwGX
z29!&kJJoTzr|v|9r(AJOu%pz|Mhizc%ps5aN^7KJ;H>vjlTxZ?g=$Mu0<g>~k9kP}
z6K(0WY&6+EaPr|8U;|Q(F(nwl1_@p;LX<dww({nPy>0b;?GFx5Tz^{t1S&he2L_<g
zjPr?cCedgBM9aE1?birFv1QIo8}oh5-LWFPc)&hbF_L8P6XpxEth2d)gOCy}VKY<c
z?rrQE0(3=Kc|?gbO_+}aN^7=ZFaMl~cKXgg^8qO!@BSai#AKfDOcC4>WJ_){^vgST
zd7wA5l1KsuPynPNEJvOI3%utuNzwq4T}=;9-F)|8@%c;)NIQxQz!s6cFbkVGzA;Uh
z1(vWK1I%<GwAeRu@543UG>`$3z&2n~c5U1OED^&`m>?1I7&~M^8;R|y-~RZ}=*51Y
zF4$QIl5@(^e_s)I7hbkV?W)U}v&n^x(a@vGk;v1)nxi1=q~SpRX_~tTvJLC*%A3gW
zc<bPgQrmV_SXA*6N<Dkx>AVeioT*s`&`{k!S8jmilp@8f^`ra)qpUU~s!unz00000
LNkvXXu0mjfB?ls4
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2bc8b95efaaee34e404b9e437944e0a8f51c613f
GIT binary patch
literal 597
zc$@)M0;>IqP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10n$lCK~y-6rINjCQ(+W`pWmC?o8;!>Mw-MDZ1gs2O-=o16}1#<
z>`*L<Q9&vNQDTDND0FrZ2gS*y&8CasCXOx+{s*qz)k#;O$?K3CthF(1J=1wP=RD{9
z&Ut06Wv|wxWdY280Q{c6CrFc46w5n+5i+}nG-(NIUnAx+c+{!x4$`ER!P>V-x8k_e
zxrC30vr|B$y;_wquaHJv9PV+E{dCu&e%Fyi!>&2DV;2#3C0zqdku0~FVVKnK+#Vz>
zD%f_XY%OJpij29A$O9O}JQe1d#GpSL-fyqgBvz0n0G}<EBh4Acm?FT(+kR@mEPr`c
zi)E9~jT0H`1uk%uX#$F52kt8Z@cG4u^>3fn-;B&2-f%PCX-V!^evl+akzpbOjwov_
zk`w}?XP?$e<Mr9c@qDTV$j76~aZYg%k7$1gbQc@SbAb55`-gLd>aizI!adO)*)UFl
zX#&a|z}Yn2UndS>1{fMj#gbP(K3Yzfa!YPHehzgj<G4&xWQu@*{6GJRLYNCAPp&Kk
zNA8@zkvf#U>LlEWUfw<u{UKW<Mnah`;LW^Ts*GN)+)S5p54M#v0BAM=qYb<Eo$#?E
j3!8N$b$|`vXD{{(70PRr!IUg000000NkvXXu0mjf+lB#9
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a0d8e59ce9f51cc95f5d3592d6af045257bf0b42
GIT binary patch
literal 678
zc$@*I0$KfuP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wYO8K~y-6os`RKQ$ZAmzZ<d$MQCwl-MaJ-a4B`^#)aU*trW!v
zxN#wF+=v!YM4_M+ZE3Y#86Ryafz*W<EwMpKYG2m0Aq|a5A9>y6zUH{dO`1}JNe>*D
z8D_ruopWZ6)+<j1U_iU50f-0(HBW7DKG}B|&@@duIP3^r0CaSBzBzIK>><E&P@v}m
zJ#^85=Fv_bzuGg{akSIdsJI=|wxuX(a`Y3RjEPk;KCFy}FMaAA-T+iPIn=hLC;+Qu
zc+NB?Hp*71Qevxj?AWaU-~iGJv<?H<q`)X45@Z3CUA88jiZ%G_)y#P4+L#FlG_Uv`
z7=S_u5+z6sRXvL+$tcTthe%W$HE$J+g^}(X$r`+N!9G~ca_B^e^NrtR$nW1E<VC5U
zR?&Dc)OFntsHU(+OOR!jIA2(*uQ`UjnhvepnK<=u0>}ep@Bcs+HVdQ(vr-l0h`tqD
z9|)Z3A1bbG<^TgQ0ci@;G5F3JADJVE4j`rVo$>HZ|D)yMuSuZbDlz~^ME1gL6!RpR
zCC(x#98^_Zp%Pmjnd$p{`SmPN1ad$HuxNNTUIF6#Awrxe3CfsNvY?C|J)Dgs{8OhN
zPbkwVxe(nAYu|(R-s3IXly=qW=3H(uJr#R0J-PHUlyVi6TsK_EKa1wAfgHoWyY~La
zc<|h_je6R4RoJxf6Y4p8;k$Ah@VQf~0id9@KG#?P+YLo(-fpA(3tm%5FhAE3KL7v#
M07*qoM6N<$f{$(@QUCw|
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..572333b2f60823b12721150eaf5f989e3138d9d7
GIT binary patch
literal 596
zc$@)L0;~OrP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10ntfBK~y-6rIO8RQ&AL!zjbnRlbfWuDYj`6NN5_Qq^4@qiYP(}
z1w~Pe7DOqE5)*ua&IAY2i8%5J>O^qVHZS17HxL{-S4U2q2u+TI+>5no?2l`74twu!
z?{)T(wU(2rL)QYB{{Z;m`9zQo-58c_fE=mgLppSYwQmv28RE349}m)@o59-mNcTJ(
zTGa80;T#pv?rk?@%qCLNCBhRHm?8;)Mr}tDZM);xe*Xs2V@bCGQ^Mx~HBOQElN&;U
zqJr)9tJd18q?(MmgUA9H#0q6rn8BdG8$RuAH6^Vh%>h39G)a;r3e?Ht6FYcnz^r}U
zY{n<juZ$C!2?LiXvPhoNFn351fKRWtzI^}q`CabHnO!%NSdip?<0mOxO87($S)#19
zNKycdUD$Y7nQdKt;br|MAfGr5ra4cJ1kuqD7(8rX&jGw^-RH}N#{5es89zH1S<EuQ
zB6+Gz;_R7jXvG1{0MY1}m%903V=Z0D-*?lAi)c{k;V{n>b@G%M|K~qZ0CR!Vx%JiZ
z=|_#bW7FANPBK0h=8fZxhU~K#32eGR;_{nLt$2NDHC@R)JJ8M{K(hxJYulY41eYTz
iXx5k12X=v9VeB`(;cY(RKrtHt0000<MNUMnLSTYZX#?5-
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f1e1740e9160fa00f36e771eb1f41c0114a49cff
GIT binary patch
literal 682
zc$@*M0#*HqP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w+mCK~y-6os`c@R8bViKX;mF5+QM=ZCkc;(<*|N5d{SjZ6d@L
zVShl-q83sTLC~VeNKGSGNivE^qKh)fW(b@be^id<INE6XoF8xAy!Y;DF>l5(lSU65
zxc74J=YG#Q_a4<O{Q}Ug&M5#9VZY`p4lXZt)B;K=wSQP0)c{o0*S<b+|7tbh+b_`9
zL<2PhP(F3)c+1(&s-v}ma>aXs9pMm7G;kO{2LcB#G|oKfJ=xw;r<B^WLbWcY0L0kf
z8Da9cXvba3EF_zIk6jxETtF%*ObG_CMwVAZSik_#j+q~HbNSA1FUNx8H=gDJf!!;<
z4F;eQM)<)9bLhfZL`zcJ&KpD~#nn+eWlr_fUs)`|ix=#G70tjROoC4=ktDNogUF_6
z`D&+g54vhD^#OWUSh+1=5F)_`ewNl;%Z{y#M_UI@-x>fm0n`6Kkd4a}t4t6t2y%7y
zcVxbO_<U<udj6LISU?_-U13>lKC{dyF${75l8LVcCvLuYINLqC2&6nk7T}7=c9?@E
zN|F!>rdh@H@@uEe$ZXG8+xzQ}LqHlZfE-{`_H6tD%&|_G1e2^_;uOe&wl>letKsi`
zLuc*`=)9BhAXzUg{r3~`-{T$Ym|N<y))!+sJ`{Nr9GvNRyW}azcy4)+e-_PO1i6-d
zcfS8)aHO$qxs<jo6%G~rgi_9)2QJ<Q0^Zav18AtM&y^Rz@j{WJ@3m3>0rAl{{Sems
Qp#T5?07*qoM6N<$f^3c>{{R30
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f2ff22beae2ce8a0de8c39b163340bb274be0782
GIT binary patch
literal 600
zc$@)P0;m0nP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10o6%FK~y-6rII~pQ&AMhfB&2JUh?ww@~FmI+RzwENvT>JMJz%I
z9mFphD~M7km6#wn+u1=}L>ydP6+v(l7e@ydZ5DBLS0`76Cf6Y^Sku&gc&2+f=l;(B
zf6kS)mi<PPmIW~X0SJ2MeL<SE;#m6{V3@?-Ax&Ds+UH2~Ib7-#_XcUw%3<v*q-#Dg
z>J$lZadr!6v_Dp5%rm4h55rByIYa^gZMPjsH0-)#JDm$itCAK0Qy|F=3Jl@>sqI0c
zM<ce~DO+pHlBQ+M6+|AuAQs58KpunsZg{Kxp(be!X$lDFi-W{DNyscA0q$VcfLZ?f
zww5>$JT#7Tq?b6u5EViSBzK%w4B+#l7hk@=|MYVB?97IjOP`SBed8x-TnZ$K^~v9&
z#9E6aMZox}2X{)7^~HOBKCA%>aH*1Kh8)Rm&%qGr4mPsq0RFi*kLO3KmHST0Kh~8j
zCdp7Cq)ZlPle#S{j$j6G-ApQd>D|-iY-#kmmrb8W-OuS0<0t{MgcM2r^Peb!c|iL3
z+DdU^<>FFi{P1Nb<xlnMLcHxEeHLSpO%F)UJ-ItQc7E<^wlsQspq(9nW)m>pu<JjF
mF1w1TSw~U_*Z_X@a=!t74Q||9<LF!f0000<MNUMnLSTX-EdqW3
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ba4118844e38672bde7fbd285c1676acc1a156e8
GIT binary patch
literal 678
zc$@*I0$KfuP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wYO8K~y-6os>^VR8bU%zdMdGNsxpKZ6_^TM~jH4RkSHu%%ZKh
zC<-@iq)nSBkszp@QA$R(Q7RookRZqw(+rVQ&ZwX>nAw;<XU2K@-kWz%i+OJxvmu=W
z2QHU;zxz9X?opi*6@Wf<N&$!n^;*DRTw9791C&y#epo9Z0GirbhEMl)9RULM0s|ei
z(@Y~Opw6AV8SZa7-V&--d?46S8tI^&!!*zkI&?KWJ3Mr@?@p^y>c9$>A(j9vQsgNM
z*l2XgT`p!;I)_eNnE+fs_EVS&3}6kLS7gXw0_f6~6>+z%{`r^Vqf@tfZ9t%Q#dpB~
zG{PiVCds19cM+{uwNrY7FfFb-;}p!~VB5tdAMQV}2j*K2hd2hGF<8agdq5;FTE07*
z=EH&J^CN(+39GgYCNT^?u~yl0Eqn3T)Yp4s7p{*1d0;E}KahhaNr5QqWkIes*Aw%7
z6PIrfY^Hza01L1IsR=W2`N9V8$&$kXkm8Tk(P;ORM{_SCOF+R>WC5;-?1q&PX2=u6
zAVmS!%db-~6LW)+o{u+rV!$Sl1GWK&s<sIVut1SG2Giu&!Yz{pZEfVEzvHQq@k?D}
z+IET_#Pq__f44~R0Z9z(9d+jRw_GYco_PE^GW-19vZtWvx#dCrS+t-JaxMFQ`t66&
z$#C~dC2cz@O6=n&RC4w#bmlI2Bcz-QAE04>bFR7oB`*~5{h)*L4}Q-!?C7!_{{R30
M07*qoM6N<$f@tX=H2?qr
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..391439be423dc612ce8252c53749cf0e30281ff1
GIT binary patch
literal 593
zc$@)I0<QguP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nSN8K~y-6rII~s6j2n0pZCt}%<SyP>>7<Bm^E>cupxdWN-zjv
zO(BZnsu-dHQPy3=9}p}pf{j>NS;j^X8}ScVSlL+E+J&rISqr;+Ei!{k;^xa!-OD-W
zx#xY)m9>`rMw6BWF#iFFlJmYGO<F$Iz6Th>-8-a7OIZ6FX|8}no#NggO<D!4eT%e^
zM${<~VQ_Z~Xmr-9GR`W}h=+JUk;8Gj`fW!N4ZH5zZubh(eM#2=QzFG3A_j2&)+Ug+
zY1no;6>DupGLtg8fiwsk8<;1<JlQQC=wWBACTSUI0*E%{IfTnu0;Wh4^|4TZS^EB^
z792eA+_>(sBypaQX#z^5cJ#{u`1<12x1XOrzZtqP)AkDaGm^X?w8>&9k-|aSLS(H)
zl478L?%9*_c>V6v^x!}ZP=rI3kkbT&{p9o-8_RQn^ra80bHmly6*m)}Ohz8ZXPSTt
zK5ox+TUH#y43J9Yve~O2-!0|Kql;cXH-k1tNh3}WFh#%^-nRclG0X$9r<Na&9lv+`
zW^VMzH8&GZBy~lc{*X-)omi#^gtISKCPyw`yp=B>ee_Q`I{-}&&~MoFU&NPPMf_M-
fQWt0gzmwb_Rxodif!<y}00000NkvXXu0mjfoksn|
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b3b26830909a9fe70d96c90fc3e8f8e806457be4
GIT binary patch
literal 669
zc$@*90%HA%P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vbs~K~y-6os_|A6G0S*zexkFMKF44t4A+_Cr{!*1dm<>4>^dJ
zQi>q@2Nd)uRf-^ZjA)A$D@cmclu`*^v>sxD&}!3Gu?<P7v>LZbHoMu~c^<kOQ)@8I
zg9pPfeDizrd-K$w6a*lqjwt{Uq1^}ti_7`+5kM)W+K2TL2B5pICw_Y5)<GcDE-*B}
zVIp*(Lh9Vf>;0qMM|-*&74Hjnh!6urIDn#~tMgKH`R&Bn*hsHZYTpV~QCtC7#o-}E
zY6#l()+@Qf;KcDWvw#OkE5_7e06*|}hCvPoK)Y3I+OzD@FHhrBb2o0*0D<O??}7nn
zAW4}d6|}!6T5oE{d5JJDp10_f%GvS0Q~3ZMT(Acggn=eQl@C~K;_f{lvMpMFcFN|x
zvB-%@KsSXoMh=HG7Vk0Zd!Aie{XUnvoj4y&0NX${{6CO`ki{lNbw`k=&7TX|*zCpr
zvGQ8p0BoQJNK=@J<|7twFfs4|q*B<JN(~L)UwQH(50rdGHsFcKZkUU(h)o)cCF~sp
z;FQV>E93FI@2(A{fihqK7U0m(Hemt2Q6q!JJQmf!AVJ%|jMP?Uesbo*m4vQ26(3^y
zW$C|LBz%W0iggX(n$=In($|@V2al$gA3tCB6;%AReaJse3kM+2wujeVy`D-&uWr<z
z?T-qV7Jh<im}i|pSMW>?01d6pxkdwAzZ3~_zk~8Ox%M`akKn+)00000NkvXXu0mjf
D6{a6;
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b59ffae9b607033b159e065336273e5702a25f83
GIT binary patch
literal 562
zc$@(;0?qx2P)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10k26!K~y-6rPEJKRACgy@$c{PI@37LjFNw9Kv6FtBU)iaSPL11
z#3-5+q>x0>8GHq^Zc!1mt5;Cq#$CB+S$p4r8@IU>f)>%tJuQ4LO*KtAp4El(+|R@B
zoO@+vv|AO!0NfdXT>RV?QZbU4y$86^4pK3M**m1!9$-VKL@GuPW;;mBDG%g;;G{sg
zRxirAw@5<?U|lfid-~UQBvFnmuqe8Vv?l2R;D&+6g7b}MW5mCdw|c!`W(7%;a_%A0
z037F@1Lm5{K%2FCNm3PQ0)DM6u72RUV7gf|MgX_+<*;<FukV!$g0Z+U16&gfw;Gf$
z2iSK0;_k=!JGZ|c9K5tB`UbEE>>K<z0U|R)l7J2%dE@zuaC~#)X{vvq1Skg-1y_Nt
zRtOvq*2fEg)cl9t*?h71EJ&v><8K)E5exkOZTz)jk2#>TGn47Q_v!OWHVhvnve}zR
z4j=_g0n>ufW=I1jk0pTaE7j`gr6;S4nURtEK{`DVpX+Uf{1LIkCrAKYw_d-Q99mdd
z%7)=q(>VVDT?3dbM|K3K_;>tek)#Ny0pH`^Pc^x97gdI3YXATM07*qoM6N<$g1&$5
Ai~s-t
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1a08183e18701b5ae0f07544bf1eb95b618f297a
GIT binary patch
literal 647
zc$@);0(kw2P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10t87!K~y-6os`dO6G0TmKN|zaAo%0d^s4`ZCog)_gW{orM<o|U
zZyxk6Dn$_VWQ1CpVlP@+l2Qu6lkpH6ghtz>f=Nt^QngK!Y_i$ic^-DQY_*|H9z1xn
zET8#)-<ugDu0#M5A;SO=Z#hte{Nmd8+DX7LJmz4qAzegcvA1VNM~?!bfq`WaxvNCt
zO60oPeiMxiM}d%t&~Jv00XGad0vw7&u8fpQQ)gc!h77~#TcNS3J6;A}3UmSGIP0xy
zH9mFv)B@lFa*)C7zyN*&uLY{!QaSDRoZIQV`Z_t8%HFx%1q6Ced>0Hr0U3det^q`;
z4Q1Oih%AZgF58X9N^&?>^Wpvm|H1sI19{-1z{Xxbh-`~eU+iY{$@q!m(}3y;3q}=K
z6!;MM=2}+yXEysFeg0e;*aq6+{XjObB9QY1xvu%AP)ICXzBJyfRO*0*H#g}CGl5UQ
zJMk<7(pp<f<?i2mx;imY0~%V91-K%z8|DDZ+ENkkOaR!8MqxFXeEj~_%|)Pz$M0z2
zJI5w0z&9W-umrSyvWT*_wsODn`RVzK7t*TRZE1+9ZK;3T9eyOR8B}MQpX<fqeBt@C
zxzgC!x>nHAX=%uwLks&L*Rmc~W@l5Gt0O-GZSz$)9N;Dxf%oh%5b@g-04UG({?{ou
h07qL9Kl^<s{{p^SQ^D_-w1ofw002ovPDHLkV1nnB9%BFi
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8df7a9d5694006ad1493779552488ac7cb9bf270
GIT binary patch
literal 588
zc$@)D0<-;zP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10m(^3K~y-6rIWpD6hRn=pWp1>-tOMF(HMe>iHC#>@hd99AcQl8
zD2k_|r~y&VJH$UASXu-dv9hv^jUYDSKVV^HV_|C-a%yEQ+}&90t{!^1nDecMdFOp*
zo_A(st!3C~wy*%^KLCYfJQSqaB8|0g0LI)QAk7xS+80PmMF;Ao9YUHdidg#!>3Sfj
z7olLl{Z~L^qf?b*){!PW!QB$<jjOfQ?MR}rX<ggxo=3VP=@MWjQ*g5YBTmoS1QHjG
z+fJuqt*yvtPBNE~Mj`TE&cJf^?;hyhMyDoe6=@cJUt1D;TsYywd=UBfJvCrfK7OhB
zyLLY@u6rO!oC@K%50k0w`{e+9dj9nDw-4`MjxC&Sd->uqN#55sWK9HdG#DalEs_)i
z(<dK3F3;SmKMF=hYk&$4R6{uGL%5YrZ)0OU7YNR-zg-$%tgg9X=5TW4nRKLBNrS6C
zkY5uK%mArWHkZBd`rS%?s(i!C<rhE(AP^k#Vcv&nZ}2-&4D*2Okq4{O2d~|}lG`_R
z(G4@R$-0s=0P=^T6Ki@vxVZLgZsN?jtNH!q`+aq`0h%6Qy0K}$!w&vVyjfRL7ia@N
alH5;Qg>Q@UyL!F=0000<MNUMnLSTX)UH`xU
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..327ed9be66446dac004726a7a00ee5af8dc5f6ba
GIT binary patch
literal 667
zc$@*70%ZM(P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vJg|K~y-6os`c@6k!<0KkvHWCPCIktz(y<Q>W+<LB}pZhdo3W
z5ecIH0HKayAwkg5C?z9<P>NN=Sh|!Qww1swS1r<IR}3v1cXocy`*xU_b}X0Hec**>
zUWU(npXd9`Bl;^!0Sq4#0zd_iEkz<qF6YZf03iZqYq0KQkaTqQOq{+obP!0i3QY7J
zhR!w+B603y@AZ+6uA`~A;(fsmC7`bp4hU##PhCpCT^>I>G~6wO*tbHl?FAiQb>ZPQ
zI0~fit=B50{_!)%X8|8j%^33s2Jpj&XBw1T0HkM`)4pwue3^KfnY($z0TeWLd>0Hr
z0$ClhwIByjQf^AueF<to`TnA-SBqn(ddd+z`oKT1C^QN4CVa49)7#?(rFN8*pIt-0
zH+rIT5|9mH@hG{Fx8S`|zw;e?^?Ppa_Eh@(6tDxB$^U^|1w|WjW>m6o{45rRXL~P>
z>g6>JumJ~94Pl0aj~2W!K=T7mZKIOO4G!F2dGVwSR6|8J;47te!#o9xc2Lri9n1uP
zt5*vv6JvMZ4P46uI-mg-;1U~~qyoM<FmJ(v1!mnJX=}f7TMP4(GgmH5N!O``5F;#0
z{yieeJ6o{r*DpNN_@sSZnkhVbFunZz@p`DB79Kl<>}gsu0{ON*xc2&0CVMr#5w$I*
z!lQ{lLB#f1JCKUn6az?TZqLOH@WN75boRR_e*@U?Hj+5HP3r&v002ovPDHLkV1lf6
B7A^n)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f5b2d08f2a4850f316ca26df41e609ae8cdd088c
GIT binary patch
literal 593
zc$@)I0<QguP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nSN8K~y-6rIWvFQ&AMhKi`|YA4y))*C;WyN`J&63Bek$bx<s&
zixnh^f>;C<UEGDbnGE70PHt|xNRvtW4>$<^3l2^$E`o!T(BwM2m#DRAYdmn_-h0mZ
z-1|M}URi4y+q!KFVEzLzF_?}A>9#!!Zvn_283WR7%Ub(du!5h3rRG0Ey6w<fI+AYS
zc(B|AKOlM7{N7e;)fl~!I7z~Rb9D&v0BBTqBw;(PWWR5(NZgfF2Ml2m&R&Le_$zh*
ziIa}^`nGJXEla8zqo$w`1sFKB91Z<h1@*QbH-t7ND!>H0Ei(xxDllCJKiK=$fcf(B
zVdH2v{VbU<^Fz<fVw4yb53E-L;Q984Pwzi|esi%rvlC|gnk1L+U%^d7I0a_^Cdyii
zB*j4Q>Bd^={#vbF$YmOU@B=6<!PIGR{m~GJ3LDEy0;%ms8!M~TxhEOVITHmKD9lC@
z3-e$Se?x{F5zGKiHsuBHT6b=hius$lw0B;EZ{m1RT!?`A>3!dcVwejAoAnEGw=XST
zn=OP_GoDi!2BvbOA-g0dVwo<GesOQTx?WqjUOG1UU{5&*0L^be&vshhh!=;l_^`gD
fKClD)82EkyTiI@e8dy(X00000NkvXXu0mjfnuYe+
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fd5baf149f867521e6f6a29b1bff3d52c7eb1eb0
GIT binary patch
literal 594
zc$@)J0<HatP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nbT9K~y-6rIWvFQ&AMhKi`}8Bfnny5~ak3YTHmGp;#&y2bEH~
zSV5aw5R0Iqi<^Vc!NFt@7jY72e=LHV_z!dt+#IyooLpQA&PtQ(@ZQsEV`}4>4)>h<
zIp=%My|UIathGB>0P`P!k;ESg((d46?Q4Jo-Vl&>2U%-hAk7C3tW@?1X?F;*_LZbd
zzKH;N2b_Nev_5thWXyA<ao51|7?ivyroU}R60J?^*k11((sfD8fGMZpY#Bm#M{WX%
zFOAt=w`Q%aNt%%{E1*#TBWM(%QHuQE3f}wBZAw~4s>83fC06vHUVvH<>F?V$VD4;u
zX=cNN4~^qYC4t!ys1=}`-g{mtfOpRxefs?V?aL#_Pj9D#a88o9^&PS)IF#Al{;p1}
zwMbG7^cQbGsLrk4Z0Aa&O+a}EP88v20O`~K2t<R8<vBoR?a7<@$;QHcH<LRCQ8yFW
zNa9ouQtAWwc@V)2;QF~Bf9>hUmD1trWj|jy2{Hh_f$1O`b|o|TohXKRK>pN?^~u=_
zS1*Q@iSuqIS5NW^?f}Ri5>v5E56CXveLORLW@)uJUcJ><&K^Ls1L(Il?N`{x--(O$
gB=vx8;9C;=0c|L7pZv@gEC2ui07*qoM6N<$f@m@Zt^fc4
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a03b2d7a29bbfd209b8265062b0151bcb844016b
GIT binary patch
literal 672
zc$@*C0$=@!P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10v$<2K~y-6os>;z6G0e;pAAdRAq7zi)*iij@*v(6K@dTt9z1vy
zJSgo&y?D|h^#>`69t+y4m4aYUlUhXdCfK6XHYT<O8%vsoiYD3ZCi^?%VRxHU8%*-S
zz&A6?Gw=7kv!h%|NeM8pS5W|@KW!@_VRGSJZU>+!KC?a8&JI6`b#*^Ka_M#qh_nlg
z^!7lf3W^drxc_wDNN3mXXuaZ=U@;YXdth4x)Q;%MzU0FA@qyu8ilVfvP$^n|$MaQ)
z=fM#mJU3rnT|Rs7=$<!#2gqiO*?<9*9GEOX!301!W_7}~&5^mpSmO2dejAX`*zrv;
z03l)OH%t}%96$>3({r5{NI55km$3}}+t8uzTnG;j_y-oox(gW{(i#-)Ek2M^lTxJZ
z%KFgF1KZ<(Xb7v1f(aQ7zLaZgo^559XFd!*I&(M)Xh2o{AIO!kWI##_OZF;ji>cx9
z{u866{EsqV0X85T!b}h5b(k*tB?D4lTS>gVbNTM<tH(J&4-{E|C#BpB^CWyX{F1Vj
zngO<<r)CpRZY8gs{{*Z9Wxxa+>aL9nuu}D#y{LmFLbMd7R+?T-e~yoxJC^hu+Xx_)
zpe*tC6;U5#L33&gj#>HoYiWM+<J0>SGx3M{K!FhqD}Zcini_&!+q$vv{$=9X#Z!e~
zuTrPNrHMabqi2KrqE~@vD6kG7pt*Oh-T*f!MTVo*hw=|HVK&-;vp|{v0000<MNUMn
GLSTa9q97gs
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2dbb2241a283fb1809031dc8727f9053d20675fd
GIT binary patch
literal 669
zc$@*90%HA%P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vbs~K~y-6rIgD{lu;OmpEHa!ixILm*|xtSw?Pm@5Mc{95wxiw
zY}2k)7ZAH3-8O+?b}^(NDP~L}5E6p4!qhaa%*!|qBkJ5|zT0_QeBU=snl#!AFP!%r
zc+T%VzjKa~rxyf3HC<8wBEnW9;16PV&+Pz|QtCfowL1Z*uM0oFe*8cf2y7J?U~eOY
zY6&Q{ulZm@=kB`NP^IF{!9rnZXoQ+=gld9Er*1WOx1T<|ODVN!g-UX(?uoC)VXy}r
z3)|80x#jf9J<YdY0}de781owjP)NaWAEXihx@cOxCCl#Y8W@e7?RaGZ0vkL2Ck#L|
zd>?dEGyqy;$+Ddn0;7(WiEPpMT7Rl7=EMCB*2DZL<zQg~V&jlsUAHVkMvIK+N@m;k
z6IXfwy)mpZQVAD4`?)-2SkBD5$+?#Ommfxf3{VXI6Xe*C{0Z}8ZmFd(HlJ)ia;^Kp
z>{2QX7=Q`L#xS!4i<9tU$ZZ*9VI><m|K!chM{h@BK-N=a0FH>PfoTVl({4-2nX&=d
zqB-_>VC3qVd(n?T4oCwfz@p;XxUiK47m)Y{mH~i(PUTBOpQaak4z+egP20(Pkb>8i
zUVBA?^mjlpQ=TXo)|bina^Ic4_r3S~hvS}tyqAUt`KxI`A7of|>&p*Qk)|8Z5<a&=
zg-sPNp?qecV=WhfkXKq201egsbCm|zUMu3~W<SbbsEjrIgiRl*00000NkvXXu0mjf
D19BZ{
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8505ef0de81a18fe40f0513790fbca07f68009e0
GIT binary patch
literal 590
zc$@)F0<ryxP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10n155K~y-6rISBsQ&AMgf8TvC@AV}w|7=sVG^RBjObDVlR3x-?
z5*2Awkb+POE<#7Kvx7J&;^2~IQv|_HTm%;f7i|{z?vCQ7(7fyL-osjJYU70q7rt|U
z=X~efD{C#Iu3jGtVEzM8OwS`hdVPGXeGO0?8v)YmBWvw*q{VCo7HWrt^!k*nwXY=I
z@Ell}fgl6!zXH0S21~}6XOgO}fp!fFeyr(l(~-pHmUV3uT|!!uv<#T>0OqR@db?s%
zNOEZ^iUtj=Z6LLbF;_v8u@22jyrn$}yB`M~qzy?;_%*h4<$ahfL9G<~-?wVOJbe45
z6BZ{PIj(ym73PjWtqkMA!ToXo-o1Fdz5V&a%em9-oorY-Bgy;r9eg*27!8NWT8ktl
zK)<v8px$1-buV9@>;MWf(5S%iB6!Xa2*iy|?72X&{^ZT#$+JuMy&!iA;%bhDFjI!9
z{O{HMG2#SffXrAfAKvM{zgd~CuLNOX9%KMA4pa+qvn#pb??egA1Hucd8?)ywuU?xt
zHgm-ba?La@=M91EvFIc=Js`Vs_i3wj{^Iq@bp7_eb`AiVT|j?x%YKDJ{GB9OBq;)R
cfFG&$6YMT<=TYvf;s5{u07*qoM6N<$f*PR!3IG5A
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..18e3fac3af3db7758a50aecf80fdf9f7bc48bba5
GIT binary patch
literal 672
zc$@*C0$=@!P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10v$<2K~y-6os`RK6Hye0zllkSB1EJM>qf!9!Ie;{D{-SJbmvmU
z7j>bF(v2V@p(vsvXcw*cpl%w}Bor4ex+sRCpw`xwN|Q8ABQec;l6l?hVrJ@88%%TH
zz<u%E^E>C>qdcCG65#w{MFEiZv?KGmgK#{v7f=+N*%>Spv<IQ?o{2L9!@B`rr$Art
z0oWA)Me!Z&>%Tk}>fRspM!YT9&H(ftgsvSB=n9^`Ik7l?c4%auqA1&rP$@R-jQ>($
zDhZ|lVVT+WT>9M5sYCAo3y|#;W&;LL(;=|}g$4k^&>C?=YmOx*Uqr`;ujqh;))n6b
zvk$^t-gb9K3X!)=<F!P76_z!xsnze-kN0F;xO>4rFxMIeq)M<{f~vN~0Vyj&iaAZK
z-MQMgCjy9;Fs~IFkSfB``kysZ*OEWJOy9bD;aCi)01f~DK$d{DDl8XW$(FjhG&}O>
z+R3MdwNx3<03DDmVY&tBGR)^~$$%{7SEG@KgZDnfpJjlm6Ojg3Qp(LRAt76ZWD#;T
zdk)Z4tFwvt^YF{?#g9M@C<9Hv!1HYU0QtI|?3D@_mW!4`t(0cc3!ftQ2TsH+L$5m!
z)sZFsej@(ZBGh${yr%l?XKG>c{i_G@>9?a<CxW`;ngiLgXnq%D>e}tkQ*WYA2K#f)
zp6ZFhq>Z1jk+Vxjf;RxChhTUB0@~|y-U6786zTeQ8|81UTQ=E<NJIkw0000<MNUMn
GLSTYJGb~yF
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..02f82c3972be308b05732ec590492a8e410463bf
GIT binary patch
literal 591
zc$@)G0<iswP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nAB6K~y-6rIWvFQ&AMhKi`{|_mY>NB|og8)z(yKLR4I=LulzB
z{s1v5l!74AE<#74v!FOwoLt&$x+vlzF4`;({t1rV9mPcuns*)Eds<7H+IZl?<(_jt
z=X}q(SJqlawQdg!VEzM8i1#Bwx;;Fw?*Iz^2#{_MS!-W{7JLupn@5Cndlap;ZzL_b
z4$L<o?Sk{KfX$EnMPtkhNt2F&_AKQ6(5Hi@BZ;kT>)0T;hICKT4ZxIgFn1cVsXehV
zB)U`!f_?*Q8%Ql<%uP@=^h0wZT++UTn;-feq;*M6_%pWHa%q^Z!pTage_+*sdHVWm
zCtE0QBofZ4*fBF6UM%Gf?^gn#_x9P&&X>=xX3n&C{Y>$^B=`Fd@RA|KXgEaHS|lj~
zdYzRg_4bw3hq+?411Rl6V**Z;!98G>e>FCe=K$%oNADMA&n-T7Q<<|6Rx>^ZQx&L<
zfiVLhzYju~0g@>{mwmAD=}x6qUruN8b07ndbYQX+_N<a0{!SFZTp)XSX?^<QrMtJv
z$EL2ksZ2AD%XmW|`y?hJnJ(ZjuRU+IE?m7`IbOd%P|hJhvj^yHZQE~fgufFd3nT@=
dF7Pw<{Q`!OZ)(fXA#(r#002ovPDHLkV1itQ{c`{S
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d14afacf6daf84ed6dcc1784ff51d2b8568a8dae
GIT binary patch
literal 676
zc$@*G0$crwP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wGC6K~y-6os`XM6G0e<pABh^MTppo_3BCgh>9LO=)o`0lXxnE
zAD{;X=|Mq7iYQ{Spaok|OHYPMQnY9f9;!hqh;6D?F-_CjHi>DoNjCd6<6(E}RvS$6
z!V5Dy!?VBl{mqPWe?&@vlY12fKswWgBH#_W2GUyqMRAyo!NM)hAl%ya>`2GWO+cVg
zV4!^`v}^!H3GCW^@JxTWbz8`<xGvbnW@z65%|U2t3LU=M_jU02`QELHqSUQW$rqiD
zXAAHq0hRz^Tl2q`QXQQqwvPZdAZsyZ6$VhOKztf<DgeUNwPDk!^v6e^MhEYmH2?|K
z9bW@;HbNrpq_-la$k>)SB&GZ$ggvEe>gNl`+R`4}`@ugjFEj&YGVo&wRBfFNQWk_1
z30*7RI(KMu1Q1nW{>Z5g_}jvtZ<eVizfX=`zkP8}3@89v@P8m%z|Xv+5I_pMJeQp4
z?YVs5QEqW&1<(NlkX2!Z1*t4drJa%ixtyJgMjl?e^X}E-G@!bQbikHUu7wE!^La>S
zU?C5}Z9t{0PQ+h7=^E%hH4YSk6`%r`_>N5wAX9L9GMfX_^3YP0i_7m*(;p&tJNLzG
z%P6^!vRjt;`-lW%<51Fl<>}?g#n~?}Mu)nG$6of$y9!Ef>Mmqm(}EtzGW8oD-#(8%
zxOUX@tn5=^QNvAG?b+%5p({Yhoti#?fZE<UzX6t8iuAJHhw?XC5;yAr>sgcl0000<
KMNUMnLSTZQktgN=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f9fb364e287276578bbd559dbf8d7ca78aefb452
GIT binary patch
literal 588
zc$@)D0<-;zP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10m(^3K~y-6rIWF1Q&AL$zu(QvdwI!A8f=r+NNd}4Fd-BwLLEX&
zaS#P*RFH~LL>IwPsG|<zpg6g-Z_`DZOw!TC!9T*GyQ7Gc(7fyL-osjJV&j1e7tT4~
zIlpu6m9>^pE$m?d%zpsJ()&n|u!jfsJ-}En0wnAqYwcUmYCZ=m7fuKXdz7uUT}ijx
zYz**o;QT9Kd$+%4jCmtz+Q~rsJd}dir@w7S5<6Y%*eJS+bXU?kV8+X^ya+-5P;3fG
zl4?=ZZ(wZ$sb!404ywj}Xx8H+9VxiI+wXw3BsJmJ+EObPVD1c@t;PC}?HVvI!Y`em
zIPo%*apqIU!c3evULHQL48VuISNr>)KfPOMv=8!y@{%O?+jsEX7-EL(P}W)`DFJ$&
z+t2ImOZT4^OVth_KL?F@m^lq@b^rw8!6xz?z<>C7Z}nVj?V0Np76FW4ssgh$s8xUO
z?vE8GFau<Beld9T<l~*nRDHwGmzF^WAe)8h$#`a!Q-j}$5||4Fm)E!EF0O3en5fQP
zbG<?{jVt&AAV(x-5}7WL-?;a>)mpl8vocwKaIBmmKywJ_?R4!|IKkgZibawl-~jlM
a`hEgsE^hynZ5tc_0000<MNUMnLSTZ+c?66A
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..13388613e5cd11e6f0d9906ca7570652ac2b8258
GIT binary patch
literal 675
zc$@*F0$lxxP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w765K~y-6os`RK6Hye0zX@3cDa5*~TmJ>uimt?s3!xhk+*Cy?
zxN#wFM37R&2MS_Uw9;C|g+Wb9aZ$0wVrUiA+FG!$G?}KxJet?cWM=MlF*9{a8%%QG
zz<nIP`#a~{dzHSIQUaXnR1^T|Ok1*mH|V{e+yy9#!)y%}ZgU3V_KsIak6&*C0<8iA
z`}V?)5GYDu|A9l@{o(fAA;02gOvx9eES6z34mA@Dz4CVQ<MY!4eO+llG*d$*Uv#4X
z<Y8<IEE|Mvskv;T>r(fgcYqDZMxYxofN~Y$-ymB6K$tac*fjP2`1rHvi^u0`fQ0%T
z-vo04VP@WOZ%0azu`TnpM1B{-o;9@6&kH9zk{;YUU<=GMO^0O_7E@5FY!e`5QAjak
z=;a&dPwb2UqAtvD*@6T9mH4-2na0xm+{D$JR}RL2BA^BT2eNHg&A?*P6(sCxYGwN2
zy=zCFW;4s{fC1D1Sr=9_A+ZXx3r@;_EaXzr$k4^xpT-7~K*?2P0JfBJGfW6jf5Var
z=?n<B0J>J1j*k!a4m~>a87KqmfDV}Wu1ydilXGgavIeH<p{1x+3X_S2FOfSvhhw%?
ztGJM=o7R>K9gKZ|isnntsQy?}=SD_H?ha49f1<hyDy|zYWZR|%J&<J@JzuBZL?7Jh
zOuKtkp9+fxUcyGr&K?V0214%C^Z^7k_RsknV7aMC&zt=y{{jeqN9?jkU()~p002ov
JPDHLkV1l9~Bs>5B
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8bb87578713d8e2eed78c35a97196aa5e17b806e
GIT binary patch
literal 578
zc$@)30=@l-P)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10l!H^K~y-6rIW#H6HyR{zj@ib?QS+nA=y#_X%mw}6GFjLdRSU|
zDhlGNAOS%HFG7!no;`?%iYG70-t0y2CLVk7;GdDZN9j>$_IY@_SZhse9C+|xX1<x<
z%zI*tVOdKO41oF%KsCQF1xXTIFrNUb)g>TFf*4~?LH2wfc6V<GNfK6#F&{<bvDOyg
zdEopjU_74fE2Z9xNYim3il9=lKKa{rM1;x2IL4%RL7s`oeL&S}FdRY<T#C&hSyCfS
zXFV`IkbzR_0mz#5L%(m2$d!WQ@hk>87Lh*uT3c@AGPK*UxoP!Z+clt0PQJxKP=8Y>
zIJa^~w`&t?wZ-!)0Gyq@old7;KXkj%h3~K477=}Z4z6n<YQYZ07=wsN26W^2btj6R
zzbu#6Vn93(dOg_K0Ilahzz#N(=K$W};pe@rt^HS8m$t!nv%U_k7Bm{aclXDNGnfL3
zD=X#T=;+InFzk#xuQCKt0L3CSn|5YlIRBkU2Gc-raB$q-*?Ib~UT@vgy426(N~JlF
zD-sKtObz&>(YwK5aOY7Nc3xa7X8}-M0=kol`3^VuJ6W+*L{i`a_>ud50ys5ogCG~-
Q@&Et;07*qoM6N<$f>&Mj5&!@I
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bd70b8d77ad0fdd290b50a7aea3d75657f172268
GIT binary patch
literal 662
zc$@*20%`q;P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10uxC@K~y-6os>;$6Hyd~p9xunB8<4JTmMI;F5S2&_zz0ODs<C@
zbmK-Oh(#(CS{GKLwJU>~l;R?bE<%T(P^^hUOOrH7Q_?hPzUS*+7c*0*w85kY4%{>M
z@Z9sBbLT2cOHu+%O(_b1biylHz*~gFg&TmPILxcTRMlCi>gcD5i5J&^z*T{Pu`w7K
z0YwSi9v^?SqN+DT{)&e&rB;)&(SSq(3<Gq%{WX>P_#hIQECXVg9xAn(lYM*)o10)+
zAcR#qImu7X&E5J2*nk`adIke%wLsILS_MFuW_R5*dn=muA-1;m*Z?H-pZGbLlL+aw
z<KB*xqGH?TXDQ`RA?%E<H-FF0jut$)cfbXhXWcI3a<IP-&E{npvLS>>>w4?u%*^#D
zAo{}mR;@bV-Q9oREKASs?IoYh&)<my4WJwRAIP@h@X)Eykz;p?#ho{ci}&7DtGQD^
z2Mj>=g&79q^N`6nk^xz-7h}=rlUG|?kpj?kE7Ad5N_ie81e8jU%|f~C!~nfsb4SzO
zhgVl0eg|5>DbNE<eAgxjP^maQIXD2*^w3gtI`vdO|0BAva5rw-M%#sSTv-<`bTA%=
zcH1wn^Xus7&qgBgdOewZTXHLCyRN&CONSQpK$fLH-`@TbTVB3jcK15IDl7*06V7@z
wJso-qgxt{d0R#;8&iMymxl*L(!#<RM0U%&V3Z$?<bN~PV07*qoM6N<$f+ScX9RL6T
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b55967823f159553d2e5bda079489903ce01e437
GIT binary patch
literal 590
zc$@)F0<ryxP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10n155K~y-6rIWvFQ&AMhKj*$*dB4(N`_huypUKd~pcIulgoe6^
zf*KX1B8cK5I0|*tK^zn(mnNGowr>;NTpau(9J)J-I0?<W4(~l|wI(*6>A*SnbI<pD
z?-i{zqek3A1E~K1jOF=Akhq5f`Yk{>HUcE>AzJI#Ank$&r&bRMiF=f^*0G3Ow`@4Q
z3I!L;e+6u9_SckBuS8_VFyUkif?`^ezqunKY<IPp=;VSRw?*VKpi1L#Vg<ZlPj3#%
z4pow*U)SimAWfyz6_9dThiU_AjWpkP;nrrq1F|6^4fthS9)1W%7oaki>OXL5Ky{ye
z>4d?=bHgwf^TKQmrstqEK73yW!21s`c0TWXdb3n(?fPD6Sw!sb-@tKFh#KOdXsr<u
z$$-v{&eQ7I*4@X&u-pNp;KE`ZDzjkO10awtHj`%p?!)`<+Q*jGo;bFD96%IAQ!qUb
z<;wo){;)WMDZp|IVesg|$D5N;b=`A|D=7*r3#Mk$Wgm$KzZ1z|HV|Aox3SPZbL(m}
zF@Mpq{YKvB`U4=pNi;H<HsIY^f7x7ap1(F3Rqq`rX9!U30Xo}V{S^-Jce2Y85lMhu
c;74Bj30XXD`W;44PXGV_07*qoM6N<$g6r-7w*UYD
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2b239c315b1f156bd468c79f02e57bab50c4cf80
GIT binary patch
literal 677
zc$@*H0$TlvP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wPI7K~y-6os`RKQ$ZAmzZ<d$qQttZTmJ>uimt?s3qd#CxF{91
z;Kqfx5kX2RK2T7qNGsJ=HwHDS;-ZumLPMxftf@+Cn>0zIF^?v>N$zXL#l5#piNPcX
z2F{!rzWJSVW=45EDkZ@A0Yw3j_OvVWxX$C@<RL&&Y-V?`1Ag1-@%O&zJ3F!;@N^6G
z96biUeV{0w<EKts8Sn8Q_BAT*#FSD&%1Q|qX28&)uBq?C(W#506a5)LbW%g5RIqm!
z{y=mNEE6nYrgQm3|KN=yp8yMx?Lc>60M!aCMWC1iK<Gwo+A!+l^O2Xqu~&mSAfa`~
z_rUCpuo{E4nC;s!ku@#jEmD3F!dj_m<!=MmdXp~PJ)jBZTD=D8I3(9WEjO=AWJwAU
zt80}z7p@)*0HP(V(TX`p#UZh}8#7F8<HuU~_N}`oLqG|rdH)BpEXZ!z3IT+)s++0h
zrz4NfJkRFh+kgh>fNTjfbVw)Q=Zc*&AoImka4K;9{@lVu5-2;0G{BNl?u7{fztfP~
zfNTb&u;aCQd3iqaV))tQrA43uYy)+`pyAqh0rFY9*qKc*3>PhhS}jJ`6Q2V^4^D?n
zOIIC8)k&-ALVIUJP*ZmUnqK|7_3Qh`4>J#^XTxJ@M}g`L&4K*0X<ip(nA*_d(!1cj
zC+9NGTD3uiNgFR=r)GVZeK!H0Gc_6j0^0lM8XI6bsYrKp`ceJ`1_MX#XpDs000000
LNkvXXu0mjfik~P7
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f9c0cee4fe470027cd4d6caa783b13d288248c42
GIT binary patch
literal 593
zc$@)I0<QguP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nSN8K~y-6rIWvFQ&AMhKi`{|m%QYqi6*a>)M{%gG$D!(Qisse
zL8O8h6|^9T=pyJQbQTl`e@rfIHeEz<5hqOs2mb`e?vCOj2+g|=?>(&&6C3YzxaXYD
zIp1^cm9>^}Pp^XoF#iE4CiYm6UWW|WHvqZf7?55ES!<tzmfalGmv#y1btqYDUrD;;
zxX@Sv*8}HY0q-~ZE5?{-l4gtp3oY;_BA@=Y9Z7UItrObtjL<bn=K$lE;qW44{T;Ch
zBu=V^VZUy%b)lv)<~(RJ^22lk_BSH?w}S6B`fZ_gNe%e5w&ZvP2<9L-80jC_HDF#o
z{M;`3l}D+Rb0~34%}0rTdGx$e0I$1Gwmxlrd~syHwVltEj!SaCeT8%e3T4oU9m-mZ
zB*nnY_4b3>YU{?`Qem<U$n{{l4wVDoxI-Wi4K|kN0N%Y@Z<miPtlZDK`J)hZQ<{Qc
z7WP!Zm;sQV7ZJ<=>0GwpKfd$fN;Rmh<-Li;M3|F?y))6wCW7JbL@~?-{L81;=T4ox
zdSPE>_H5S8H<GwaehB0biK$qo3*>IEJ#C(7u3oGLwVMOwi~yP)z)W}3et}*5ow!&i
fDFn8G?}_gRn|^O`1Tyf100000NkvXXu0mjfrlkdh
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..56839321e2025054e80e51111d8cda4321cca5c8
GIT binary patch
literal 678
zc$@*I0$KfuP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wYO8K~y-6os`RK6Hye0zX>tKB1G)Qx^<<0L`A_(Hx&h4=}rY7
zAVL@FLZOHhQKX8XrC9ORl~GBH&n{e4gIEyTRIQRWO=8+KO`1$6nb*B8W~NQ8!6XMR
zoOAB*-QPLq&Q;#rkrH6<aYX@;PS}+BJm*PIatoj+4zoE}OUQ9rLv2rw9k{v)@HGqc
z?P!NU3n+?jSLg0i1FfNL!D__~!2%m$XFK=<5ZDmhKhXVS@a*Bft%{;FtWZ(&PRC0N
z5PJ{80$W(=`NhQ1BNw*625dmqGnf?^Kt+YAD5yCAgl?9H4YM*Z5`7f8HF(+pB-Ebx
z8kqATBx8_@Ilhw<S<5z`ODVq!VNYs$>D!^MwxkF54p;~C%qT;42C{J|m)7q~WKjwc
zE9>gDeP=d@0Z|iHZEDT|XMV2cOiQ1h_%(XD>-wG{pa_)x{{smd^1op|?#9yA;;Hez
zi?=)P&*f&8039#@SrcX%u#kY%q*F2=7YeCJfB4*uw;vxQfs(682W%<jT9^=!PeXPZ
z3K@{X$!nF;_`B%Cp5DhNJ_9PS1XKW%s%zs1C}y3WEY5;udT1$Bt?+3oF%~}G+c9L>
z#<C01+_J>qSHwRy1p4x7LN~OD*}3m8pN-rcel>b8?J8Jym+nITIW)fqGA;eehc7Q8
z-FFXW+&!&Ig+(2I!b;CNP6jUlK{qt300QcJ=c)%_xur;NHTqEg0cATk>-bH%!T<mO
M07*qoM6N<$f<0~?)Bpeg
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cec2e2817ef07913b35e59d53bfb92fceeb2c559
GIT binary patch
literal 589
zc$@)E0<!&yP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10m?~4K~y-6rISBsQ&AL$zu(Qvdwt2vKid>7jY&-h6M`rX6$ve!
zL`51Eq#%@ni_lT*>>v(`IJl(Q6hUwk7s18BMVrOFyQ8=%H19gR_psKQ*m&T=g>%k#
z&hMOiWvyjg>-Vq#=05<1<USUp-@~)m*8mfRF(CaOverHqT1sc2x_C%Pzemwp`%2P{
zlnb>*Nc-UYE8tUiuxyNZCaGc^sJ6k&M?U>+JCfMmvQB8jOG4|CRsiEqLS+HmU{7oU
ziIZl+aL};WhEU5Ga}_il`Jvp5j<m1f$L^pbv?-|xzt)zRmxJOQ6swW`1G@&y+lOB|
zg<$HDlX6ZZjwAC>s)9c`dR{4j7w;bLeBSx+^7MRrH^>yvNOHe_1ILRX8nHuJYmuZF
z=xuZ!)K}WK?v--W9YARx$_*$Shm<=60?}Y&c@E$|*?6;b_T=(?-_4$asGHy@lxmQh
z`MtY8Rvg0&kj_rzg6^I7H)qTB)xgg$B&n%1<SWszv*qFML@~?-g0%~qbC=JpT{|{a
zyW+dqW)kOShd}m8OvN%?Aai&1Y3qFJ;`P~b{q})!MgYwoptrqczrrE@PFyUM6au@z
bkHq&A?~-umtKUn<00000NkvXXu0mjfFG~*;
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ffcbe04eb8e731561160c6b43cb6119d11bfd450
GIT binary patch
literal 673
zc$@*D0$%-zP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10v<_3K~y-6os`RK6Hye0zllkSB1EJM>qf!9!Ie;{D{-SJbmvmU
z7j>bF(v2V@p(vsvXcty|P&W-~5{e5KT@*u6P-|;TrAeBmk(lN^$-M4$F*8kS4JJ8o
z;GTPi@BYp?cdjz~SW1Ay=M@D&+F@7baTn2GYA>KDHnTgJKVUC<1AUW2XGV7eo^FAj
z1O4FJ1&ZQ1Iyi87yf?7l->kSJm~ST>?1vpa(Bt!;p1ip<F>-cnpQ0!oD^zNEyW{F_
zh);ts!4hUVvynV^YUI#+zyf4DgV}@u=oMIvK`jS>(2QDCGwS10v6tb|i7PrFq4mVK
z!0ZnpJ8!$25mIDL%Xov7-z;G*s9O2Q@#}pl7w#Ug4d$9rgF*rdE1;FP=OwZvg_u{h
z%AJ9$dqRL{32U}m4)O`uSZ?g;rWXJDbLQ5CyT>9x38;Dh2ND*P*CD^+mTalZYjb1Q
z9-Vx)o=X$~4bTDE5@zX8OhR_SE*X&7!dm!YX!u_A<MR|yb`)uVC8gX7lLE?V$j70Q
zv10(WUY?7_UIc@$E`9<kKoO_|22Iz-3sBA4%`UBiWi-$wwJ^Jw{2Us(e<EU7dewob
zPFdpbE8<;>fL?8E)OGcH;@9HT>kkj2?`EE+9R*d#H3#y~p?O`9Zfduuzq}0(KN-w8
zIkicJNgIE{X3vgX^4|dbPG~d%1hn_gH4ngaN|CO2`cVD>tt&R!xkzdm00000NkvXX
Hu0mjftx_Ud
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a2e01b5dfaa2fafc5208761016834bfb0e6c9cb4
GIT binary patch
literal 585
zc$@)A0=E5$P)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10mey0K~y-6rIJ5rQ&AL$zu$c?FL^KTrPU-wiuRA`U_uZaqzb{>
zNfg9Xr4$4yI4C$OU3Cx##mS|OPJ#$-;^^Yw;NaxiHmhUlC^qjpy!Wuyn%H>Y!o8ex
zzH@%(Tv=-w*18=mfcX!=NOm6z((RD9*mnTAks%=64zkw15}I=YsGK_>q}yTCTKiVg
zqVW=d;~xOBzS^4y`&H6)xlnFFu9W!nx9vz`bIrQ3jV}o;OS%FWuMCH0!3}rCW{@;#
zJdS(y7+W`}DPtCd#*zRiHIjq&6kK2JwS`tBHQ?9UGIJv+PD3!6=-;<%z<hr4t$ir0
zJarxSc;*Oal0>gOcwP>`%MZ^szHEGYb9$z=69uEEBzZr!!O15O4H&<ywMbG5%-?T6
zt}V81JuF9KZ9t9>Q5}K_FkT-BB!f-mxq$!T?)$m3C*~jdUhyO(-4u>MFa?G2-@E%`
z#VO1Hxv&t0ukU@lF<GrGMSf{EOEo$0k0mq9SNs1Hr7#Z&Z(mrMUO02}>e0&7W#20{
zvN*Tc2eL<^lgjjf;K9=K=K1EuYZKMloqgpD0GeIE{N|e7B7OXmrNv@NF|Y%C&wM`t
XyAE=_`=^_|00000NkvXXu0mjf$qxcA
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6cf6949f7873a8d60e420402db98c2b7fd22347b
GIT binary patch
literal 670
zc$@*A0%84$P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vkz0K~y-6os>&xQ$Z9!&r4H`B2=Ul>b5I)E?w2n(v6_tN;iU3
z)PfrqMG!?qN>M~XP#10SyAWfwEh5^5i(n`f#D1(;+QuZNq^Zs4y}a*?i+O2ZiNPcn
zF3g>KIdeZVqb)p;5}>O`(*UG0o03pv5$jLx1~g4En}fBssYORy=c~Ts13Q6Gv%pY$
zH?-^kO$!}3b?CxSN86rAFylrf+_D|oyCFLP+lU<dc>PD~+sWr=HBHL^qLChI)*lsZ
zt-|UjkS=(_O{doqXAWNOdJlMjtOvRQ18_^Q76&^AfH0l%xaF8bBk`xB*IxA6fP~r;
z-vR>_UYJ#i?-5dDUC$YjQhxJ<H>X?0@B1%xCO0G00o5>HyfPTepf7@3toBP}K?pHx
zSfyM0F7Ao~q9!aTc20pyKLdNNwKTO5yK(aN;W3~9l*9i6Ne|55DnnJWXUwOjANAZn
zI-JTa=K%|_0a+6!Y%mf~oKqzOa%DX=IuPx<6aD-+2^9T|EWndeZiPt!W*UqoFf+;q
z(9PoX>-dxYE6>hN0VN<0n1Dmz+JphDtm;Ym7YJt)oj2AeXA)ncr|%vab39x3A%<U8
z)rAgc#=zA#H_Em#v$!(<Zg}F}_{-Q}+Rs4u)$$?#99p;nvR&)uhp%r&dmo<2_&y_$
zg-abTVWVez&quBT5#MwI00H&=bHM?)ekrn|jeeAW0o5%$numM>wEzGB07*qoM6N<$
Ef{L3OQ2+n{
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b4acbf86314736d0c50b6580686fbf5001921be3
GIT binary patch
literal 584
zc$@)90=NB%P)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10mVr~K~y-6rIJ5rQ&AMgf8TxY-PgSQX(36Gf^A|tm=FY~Duk8}
zA_`*sgBC;)Tnd7V(8<9;L=-0x+Kes*x8msH;Na}w)ZL*p;wbdxI=uI=)tcCNrgJ&x
z{?7frbLE_4-01gk0OmgclUY6%q~9ZSxGey0atuhnhn#b7gqBPM(c%#y{T@@!xwn#T
z$U=S*OzsGfo%MJb+-FJG<wMi~Q%Y+3+jb<eyW#wS8(b8+E9o*|yfQ=!U<&(sGe~-A
zCLY91hieM8jWJh*rjrH;TQJc|@&f~R*5j_wnxq!|T3Z&T2(}KvT%!NbR|DqD^RL}<
zq4L7_{1aKh&V!u;uRPi>58(Ctm)oDVKW?6#@9dSLsne2d{2de~5RI^3&N(D01%{8h
zPaC&8_a0Y@(_KI&2VoO}S&$t9fyCHUo)6?U@4s8>oLqhq+5D-*90-m<P=jEG1E1rM
z6{j!*1jUJBVe8?CTlH#VrIafzWWp3ca6B>FuMYnwN?{f#JUG8rzj@}))!9nzQe^Y3
ztk2|!Kz@_xr7|rLJzIIzKG(i*tyXQU9x7)9(Ch<-yBqEs>EWLu9X60O0QP_%S?wqJ
WpmQ_O$*!;f0000<MNUMnLSTaDMFH#p
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0652f280ef143e88e64fae4c31819876f30dae13
GIT binary patch
literal 679
zc$@*J0$BZtP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10whU9K~y-6os`c@6k!<0Kku};s~IbGNV`cL>e?S*M5nq01)k~>
zNDu{HgrZY;2#G)nf)vT9#0ru^MLKj4k}L|UZS5D7KUNJ}Q+IdVnRn)WJG?WxY74tN
z@WT7d^Ui0!&yV*J={s5j>^>(1fHr1Dj}>kb9W%QCAq=xJ*tWRY?1?u#y?W|;Enrm&
zv}&5bssT$_hg*(Z=&g_MjTI^`3uaZrjwTRQ5ZxX-`KJ9_f9IL*dLcyF3WfLAWZe4$
z_9$o%Jmt-%7N=ScUD@{n@Bv*)Vb)*(Dhu{F_-SM2<?3)==6j!vKODT&f6)ar6tDOO
z7?|VvBsj_NQ&3thNMAnFT7Oc?pU66yF9+KiX4X%bA8dt%Dpx^Hg8LIxW~*PLSCmr8
zoRhuL*jhILsG?P~sv&v+b{>P;qfoVfqhEUN;@J1mp2pU?S3nF9kz%kl1wP0*qtJxx
z+sRa-`}FM-_oma6%YXy8fG!HtF32fxCQQhHo?A){whvtHeDwPM43Gg<0+_G0-UL%1
zXF>h~Id5!$Y(A5CJpQ1gt?&FhAPX!5c|cOoHW2`C!6aKwgO-6Zv|6^8-hP~VKhS*h
z_>lD7TmZ3yu+-)jiDZUA<<?)Uy7uQEzrT)jy}UKtH+FY6P>>6j6F~mk0g({oc+Rzv
z56=hBb~VojKD$7LM+rAU6wI?Iro;rf2muO8n{$N)@PbfuxXK-r{{WL1Ee6f!P-g%D
N002ovPDHLkV1i{$Bn<!n
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..86b9ea020678fddbd46b39dabab4b231b9ea49b6
GIT binary patch
literal 594
zc$@)J0<HatP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nbT9K~y-6rIW#GQ$ZAlzkhOblbfWuDYj`6NNF0Rq^4?PMHHcg
zf}$wK7DOqE5)*ua?gSUojkxj&>PB$YHZS19HxOL8S66P_2u;Sty@{nYZH;GjX3js~
z;XgAYYb_&3r)>eue*pY`IvS+Yj#=0NAe9>d(rL?D-U^n9XQ0;nM@Xlgv6lA|_i#L@
zH6iBXob-Hmr&TvbTM|VgE-XHQ<P-oJb~}==yDg{Jvo|FkOS%IX{As8@fW)ak+CC&a
zROt3>#adgDR5eC-1=&DgptJ(BD?z@$VR!p!L(+!CJm7OMl9Nzaf_x2Phsyv0%-5~;
z#zZ>)%88iSL8W*Z@)y9LK6YLafY;lfzI^=r{oU0wxxGxnU6kbV^BcIS0AeCXLS(H)
zl0sl?^WnvE^V-~ttnW1d5%*!H4!QFXO$>)XFxb$Z19+Y1*O%)Hg_p^=b2bn}U}7$?
zI9UPX9EJ=w0+<1!V_r1%Ve{5{IiJ3tPPmuU|0a$HQwzbc$4f`P6NNArNNud0D?O^8
zUY*H~-A=}x`GL?I9}YQSF%sHzfyA5kmFkV9;#xVEe)d;8#{kVfV9f5eeh@BB6k)TT
gq#m#b{OZ?!1H#X3K2B~!F8}}l07*qoM6N<$f+<7)-2eap
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..36788859bf416ca418bcdf486a835906f88ad505
GIT binary patch
literal 561
zc$@(-0?z%3P)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10j^0zK~y-6rISx<6JZdCpWmD9rrXUQp-Is|ZR&b3A$V=UV#&o)
zL5vDg5Jk{~;8DoggDs+`)=Qh49=&NlfPRtU%^o~>@*re)JnSaKT2mY6G%z#IyuX=w
zWoArly|mc<2cSG~Cxi4XZ`cO_%9B8PCNp~{w8{){Ri}jX?2MVcmvk3D1rUJuul4b6
zzwMlRD`_4NSP_)cnEtjMN!VWEC6-(ldMN28;FtxL1ci~@0VFG`#Yx;StRd8L&fOB4
zOA~-5&{XP=HjH=s9igtICQ#<66@f*;0uUT8Re(Eu^|ezeR9<^I@4_&05m*q+jvW<{
zuGr3XYx~!>*RC9VJ9wE`@&kY`z@b5WGDK#EBmp@fzt!1{9<4lnK3A-E01*HU!Fj+R
z1A%m~nLG~&_Md)SZC`4?2>tN#@Xcp|x}e5yXZpvAGnfOWiqply=VzbpMb&7d6qJ^P
z($Xnlo^)o_@pqyO<^zT9T6gim^8MTOO8rLYhs|MPI0kY=VlI>E12b<nc3SJL^*d2D
zdUC9s6M$|6n76&;JDlS0WX%#u3D5_A4r0Fmj;VJYZ!QZ}00000NkvXXu0mjf+9dGs
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..45e61fccb022dbe93cae0f03991233ffc4e724ab
GIT binary patch
literal 653
zc$@)^0&@L{P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10t!h)K~y-6rIgQWQ$Y}bzYS4a5z=}xz1o9+g%?liK~d0?M-ddI
z7Z2*ugOnnO7NIRtC9U+L!IBp7;31$G#DW-8TMsp95-YVeZGOI&_jWwIeI#uRBz0h5
zcW2)BW_D&r$(R-ZbtRwxM1;Lcz+YsCR}TY9DfJ()khchj!Y@b8j~oI5dj?8gL?T*b
zOiOjN@?szqJ_rOvgl;uJFK}GJe(2fPb8h+W^324g@gqv9t|L_P$K3dDATHp5qn&(a
zGjsXqoxwMN3rHu0X}|zVKtf;x09~zD=WF%a)9J)??E1_N8xUw;@trV?drBbXe+pXk
zdflzR5|J;ib{C6Q@mu)jK(^uG{h$@*OBF~1D+0w<vmo1A>r}}q-R~Rfj{-W->Sm-D
zI0l?la6-Z0PP6UUoAK}QCw)Wx?|>da1>3@Wae<!#D`qQhC7DZ3oOyiqS$ZSA1z3O$
zNPCzKWPnBSQU=Kta<N;{+YcfiB3ZoTw++k{kzFti<bfXoYi17=YsKVLVruy6^J|~*
zYQ6>3fI3ZW<H6Q}w7{w{1A^#6rSNefvk*P?@bsMR+GPW&n7H-s76~#ZP;MMl?8?`r
zUrVnay&avOd_S2t5tNNu2J+7i2>Kw)vF^=&o{e1?zqsaeo1$>&;3cT0d3FG=#F%7#
nfQHWITyp^&lZyD-?V$V%--An~J(bpa00000NkvXXu0mjf(YPA7
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..efd75314fae68a605c9abc8de0b2473f6d1fe9e6
GIT binary patch
literal 674
zc$@*E0$u%yP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10v}04K~y-6rIgQ0R8bViKX;mF5+QM=ZCkc;(<*|N5d{SjZ6d@L
zVShl-q83sTLC~UTBDIWMCCMlv4Z0|UObMLwSEVyKqc)m8=f|5j@4b6k%zHX%lG=d-
z_Xm8=_x!k5Nq3_Fs54;&AR_G50{&vI^<p)klv4iztE>T_wz}fg-OI-+fxupY0qPnc
zR7F6k6HTX&wjHjn2$d_|9qhm%sB3`WK|=fYott`8-x+Q?UZa%SwL&H4N~z+jvoQJu
z+#-&vQ;Br0@yM0Ve!vA}Cym*F0pyn<_7aQ)fHsRxZ=vY6y%_u&x%POd2ncN7@jqbz
zqTzcKW}>AvpheQQqhE_K=4u(wnD#{NrH(lt?g!Wk^UX3~eiTw4A(!5AEy9`>`I0Tz
z_o^<mcL92PSh*Pqm>+>3?>A!E?(ER`V)MxxJw3o0U<UsQa&1_efaGv#t0f<c{|cXN
z?r)F(%o>0N6am>DX6Iqy6U+`k!2potaxQZH+3@}61JiRr##3Ygu83@cX$R8drIeN?
zL0kYbrXA}ToNl@L@ZAWI1q`47*p!V;5Cm3cO2u9r1IGkFK(A)4;n8nPU8ipK^%NbQ
z^B{RIExma}g1o&0=F0j(-f})qCXK!akyvl*o2itiAm_Q|LH^pbpbxTa_jdP(c%;51
zy5MumR5<M5C9KyhbpGj0Amo?744`3W|6F+k94{5|eYYRwZ_pbz{Z~cLIRF3v07*qo
IM6N<$g7uIo@Bjb+
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..69f590d9671aba72624f95528d7a5f2ba6d2f24e
GIT binary patch
literal 582
zc$@)70=fN(P)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10mDf|K~y-6rII~pQ(+W_pZB|ey*Gb_Bt;6giRoZM5S*$IS~`d*
zi17z4h$6TY1Q(%`gF`8zIEm0^bSbzMM;8YNX9uV54y6%Cp*Nqyy@_p2e~f23hjY$z
zc+WYq)-tknx)#9v2cXb*M}u^_fyHhDP;f?obh@(Ez7v`!GB6kYBc#(Ex7NOwbO&EB
zmx0in91^c>FIf00={ByQ6+u2}*J0O@gk9fpd$xB~=%J+RfT8HXYy{aq^9PW$X)^A`
zb&IVFHH|ShgeH;#pb<c0Eb;dajMui?Ld%jGK!JmnGf?$m+JkVodI9G9%Wv&cw)o0*
z+%tpBj1SX36rE%D<p8|?_;%~_)|ZXe%*EaDD1Tm(&(9bFB@m+{A+pvYNhvT`Z9l6$
zYTbW6kt?+U5gMomFy(<i9JX(<sXP}5KRn);UpU)Z$@tMZAo=Z69#lM-^!EMwUnfps
z2JmuYx$LK>oA+wv>S8|3&#K?*2~K;-vdiv~f1(uT1KH)vPpS_t+`U;TO<l|QQDab;
zF^5AANOV$}J`lZGe9^qpymYHpt}G3ea}3bz0S0z`=LczUB1?z$B=vw@;8#EQ8}OoY
UGrkp${Qv*}07*qoM6N<$f@sS9dH?_b
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..77a24693992ebb64f16ca148d6ab15062831e35b
GIT binary patch
literal 674
zc$@*E0$u%yP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10v}04K~y-6rIgQ06;Tw&KX-cho@OYuNZUy*YTF-RM622a1+Hon
zNDu{XgrZfr2#G)nf)vT9#0rw)Dbk{akYrI%*|T3z{x<BH&-ZiY&fL>tX7Z^$@Y#V2
zGn_l0`JVGV_bR!S6aaN*rveZWHXBy>Fx@`315iq-|A5tO0ieES*W;@vE>{EAW`P!s
zRZwMNDeK_5L(M(AYwBXfipzslTF|%+DipD;(c@p*UiEdI>Znsnm90?8Z`bemFBgV$
z;0msBXD1hDn)h5f@C@((*@!VKFo2AK(HtZ_0F&2+!GbRI+#h`uKi_x30R&1rz8Xfb
zJyC#!9efH#%!2mx6A}5~88e=?GoR{P_fPY8hyR21urTrlCNz9^AZ^yA1z9%6Br<mP
zT5U^1KVV9`R%yY$C>+@ihpS<4#j3R9>c!!&Bi*$v4KIKgpduw<VR!;_fkMC&lN*~!
zbRD~S^3FtZDh1ep14wC@BQU99-1bWbnOT~PU+iz|xcl<KG>`_C1DGcwYhVVL)$l{Z
zy!PLLbRjc#Z}egN+1}PSKn6$w1wd0YHa={@^_xAVLHh|o%u+7(`t9WV{-f8M1{_ak
z14u3?%d8!d2m@)zuDF$R@*h9{{5EvsdFSBmk>1%rK{i-+0Qu(xL_(15+E<>w8;Un|
zo}Lf6MJil2a1vC}eHO*Hn4lLS!0-MBj#IG#ZcvJZtK5t74_Kfr2I`q!0000007*qo
IM6N<$g0t@>s{jB1
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9ad18a0deace80b6a89300153172d214c7a861f5
GIT binary patch
literal 589
zc$@)E0<!&yP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10m?~4K~y-6rISBsQ&AL$zu$c?@AW0`C6y#aipJJ-Fd+zn&<>%Y
zlPHL(N+}2;2vTq?bk(7BP@G)ah>IYCn>e~S2rf>JC7B(?QEc9IcrUfB=^x{n&gGo@
zo%1{AURi4y**ZN7VEzM87`UTBIz8WF-vLm_i~#BMWUYNA)FSJ^eEA<Co!+>$_N}BP
zJOlG(2%M8c`kUJe7QRZljVoxDAfEw1hiyj^cB|{gHohiwPtpy*Q1oE72%-BYcK}H*
zP4?rsW{GRUG>p-r&_t2|)bmg;B>vul{mt#R(3+$=P~f0NE==d(Tn++fc-MgW_T+QB
z6rOtOI_~-1$V`}AEPBVz%K>=y;br$z_sg5+%;lZ&Y;;MI$B$p&8z}l<bR<O9S|lk2
z`Wx-l>iy=@<B6!)21MXMEf19}c*B>uZ?LI67YN=ze9>CCFt?ubf{Q@X&FL|i%EDx@
zue-lioWcx{iN?b4<Lc`>)pBJyA4Ibne3OiUvq3VmvVY_|Q3~^baP7*2>AQ1_H>XNx
zuIId<zMGhH4~HC(=%g||Ap3mzQR8Z(b*oygtPGWN4AATW`gW`Po%C=bON+&lVqgdO
bIf(rRqdIc8gkjB900000NkvXXu0mjfWWEne
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0e7a2e35c00a17a693c1f8647a11ca85a33575a3
GIT binary patch
literal 672
zc$@*C0$=@!P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10v$<2K~y-6rIbrZlu;DNe|H>dieMs8ux+i{wQOV9vQ1FXs#Xz6
zCA0~O78Ma8Qba*eF0yxvXiP?lC>KGJNJ6AzhT$U}$EGRg^?mcb?rHITqf<8I*ntc8
zaqjQ_&pG#ACATI7Kpowt07QhfTBzKaZGXENP)e!)fJN&8Xo@yI>)3yKBM@3EFhp|$
zY^Woo)UFdPhq|^z8zYs9Yq2ov>!7&-`o9rj-M-HkU)4Vzinl7IQh=@{hf020zV~+v
z-lV}5T<s-iek6}<J=^jU@Bmp2bQuOvaA7b585=;GPN}ctSX~bXd*W?RF4%xT^@{%v
zBXCb-A(0EVf)<^2JomYXeDt&)%Ugv{O{aFwvgF|(uo6}_(}U?EOco*Uu2>c%r?pNL
zEaS?ilRIL7t`4iTjO~Lb3QJR#YflY)8NRgp>cL(h2bkf1f;@qF(^m+1qK%Qc@y@+B
zTklS1=CXhV*nm`r*&1dH7|Zz~gUl^1#LvV!uHApvJqzRmMHb+R$R98*kThY+fK<sJ
z1Nl;M<iTKf`>{vo-U9_73zPtdifiM;(w3i-uO>Je00F&dWQT@lMq_)fAMUk1rx-wt
zAgmP^I!y086ql=I*yiZ?!sLq^{rCFr3_MK+3W`Cq0?1#B7A}J<*S_5I;dT7L?Y2~z
zTcN^b6)#~aXOZLE&jXQQ=u`kStnQzyEPxw?BIQ==NBIkj?L3>rQh<yA0000<MNUMn
GLSTY*O(2v2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..516e309aec87d5304e9af2cd189277cfe11a721c
GIT binary patch
literal 592
zc$@)H0<ZmvP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nJH7K~y-6rIWvFQ&AMhKi~U)`I48sXp^EPZCca8gdhq+1w%_G
zQ4ynp6a*DqgpOio2XRou!KKNj2!fk9iHn1iHsBx7-BH{Wns*)YQfqD68qaht=iJXZ
z-*fJjwU&{s)3pHRKLGK-9Szdy1{V7UfH)Wd(&@@t`$A}ej0f|Te}r_p1#9hVN!Rcl
zn6E(S;qLc-Z}sz{G3L3XNn8WXDaZ!^XxMfnVcTnNVw3Yiw<KKx3}Ye8l_Bzf=MEt0
zrHNjW)GW3p)G)?e7L2C}P%lEg)c3a*?5%!k39U$~12Nkz7r;ybDlvrK&RqlM>!WwA
zViZ4i9rx&FWcCnL3NRM#IWGs`$@`b<AJ@OUYR;b6C}g6Ol6=1ZfWYlTjCO^{T8kv5
zz~EtPxq7?Vx<8&f*aAf8L9GZ=G5F4K2=oV=%5#D6?ef!w#bc))Wc~0s(C_AO1k(kW
z$o<jXUn@>w2JmtRveAdT?d#Q2c_|-8a~gaT&w<H&e`cl3uJ1%C%m<>Cvo~jMoW5{n
zx_IPb)(`8OiCJ$rWSc}MmFWYSXG`}Q=Nf0OR!ikOJIdJuXtn?Y+g|%ddf1nx#S%#g
eumSuW#C`$t|8VR4Pc|F?0000<MNUMnLSTXqnh8e$
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9981a248144b5ec53049739fe1a85833d03f6951
GIT binary patch
literal 678
zc$@*I0$KfuP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wYO8K~y-6rIgESQ$ZAmzllwaB1EJM>!u6;1y?TWV<WgJDCo+i
zC_bnlf}#sSL`zXbsi0k0@j=}fEJ-RZTy#+^K0vK)EtNJgO`}QLyn2)SnsIUOjj=VD
z)B^)^W`=Km=bV`%)V+5KKpfj40F+X!)qLJ0(KEaS5JHImfCbkB&>n1i-g~fn6X07b
z&_`znZ1m$3V%MoXhX=L=+XA(Un}coeLuUuHt|Q=YJurPGG}wRS(pDiv(+Y)JDmxj^
zXfP53OJYeo8DC5t-F~s_6<`CZk;43j0hA0FOF*^^Aj_s6t(f}2ld<9O>A_wDP*A_(
zf5M!TFp-9dj57zMl4;YnUMQtL+fq&zb#1Es+`fbd_byls^Q>$_EDy6eDC(=W6{;Ym
znkebojm>9vhX7e0R%_WZ#BwmRSY6UBV{Y`@r>lE!9*+P8pxp9LkS$@M2(wF$tE4tQ
zKhxiJ_w2)1b|DYwfB~rbFvEs;9wswR$e`wPKf@P7eYYOHi6nrct4IfIrPK<TRFEvf
zTn<tt#|MfPZT#_AwCBXr>+gXQkOwM&NzJoyU}??C$@c=7HUJ7_PAk0q5T6R|zug@%
zY;)O#Xl__?<r8TkG7ZaSbwM*KU%vi`y}a}KS@gl^P|{Vf><-<9{IzH;9!R&0YeOGL
z!iVmkPkG!L6&4Nrglf(LCwE>30<LS;03<Zl=V}XJxuGa;G}|bD0gwJS*)u9ZS^xk5
M07*qoM6N<$f`SPhasU7T
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..60cc155e032235c84fc11e64a2e4a746df9f4e81
GIT binary patch
literal 591
zc$@)G0<iswP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nAB6K~y-6rIWvFQ&AMhKi`{|_wrtTmi(}WR$Eh{2~lye4xy!k
z_yfeKPzr*GE<#74v!FOwoLt&$x+vlzF4`;({t1rV9mPcuns*)EOSCopVLWi*-h0mZ
zoL~3KTFc1N=~@8uAAo#+I~t_Z^(?#tARmkX>2zhSeJNNV@L<02kC0BcV6A;4X$jYX
z`8xP6&SCv~>mL`5F)t)d;uvVnLM{M6dre0Yc4N~CZFoiKj-+dVp_qlalaNXMw(Ub=
zr)n<@>lRxVY8qp%3o5YzG$x`Y?F`sk|Iij%mDB+8?3Sz#(-k;g2Hzc?HDJCzecdi)
z@@q~aablpE8IK%`*#rBP0C?7YyY+eN%d6JRsqI3LJ}b%P`w#Gv5yWU;h^)0pQVjH-
zwC~pLwJtrZWD9LT_%75Z;8+RV;ltd~*tk3g@ZYaIT3DPt^EmCMP6JUk<6|&YhUyp?
z^EYI05y1?Q%%+0Orw41dYUS#3&QH&&|4ot(OctY_m2>;P6U8tW$gEymn!bJh!i}lY
zk*jGp)fgD2y}cp3N=(FMx<K%Jd8K)|dG2PdeDwa%at;8RKY*Uy*!)I(IF!V}LP;U8
d4gBouegT3|Z)(R`Drf)z002ovPDHLkV1kJ82z>wm
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cb2860cf66f93bc90b667f5945e47ddc92e38f47
GIT binary patch
literal 675
zc$@*F0$lxxP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w765K~y-6rIgKU6G0e<p9yJ=MTppo_3BCgh>9LO=)o`0lXxnE
zAD{;X=|Mq7iYQ`H(1NX~r6)rrDO$7#57i(Q#5Pr{n5JoLo5r;H-me)CyBpWmU{YUr
zVRvTd+28yAW=5!c!wNtg-z@-?Qmi$6?nAPxe-j{t5dQ%SwgAu;Y<+tDP{#(qw^pE!
z_U+KJ4xbP^PVL;^w<Xvb@G5Q$w!RtKw?VU?KvUDfFPD1<dXApmEQDxSp-|a^-SNd7
zypDk>F{PDC{9NeR+IegkumDw$F~4B|g$hKcAd?4>WkVaP7<%86=t%hVz#Sb>P}}i8
zVfL30OWNryl1ilw%N$fneYB*U%xmROZRd_8UAX&$)i5{8I!veG`vT<4tELqyC#8xN
zwDOIOXAXn_SsUh!Ox^~6ovRLMrV$_gHgR>=&GQi;2bBH)1X&V(WNn3jrDSP*Hr})E
z?!|}GnfYZv19U*uhUq3G7GW}JmkerlX)$~u^x)Q`w=a`G-ch6hmQrd3OiD;)A)bc0
zEJ(Wp`ATX0ar9N!iT>^}pa3ib6~Mr=ZERRNXZK_#1BMBJ0=ZNwynCOR3hlYw8PP4X
z=s-$NS#sqT@e>(?qE;O!>Dt8S`I+b4BZEV|qc2j9f})d}1Np0Ieix*f#<gc3-h>a|
zzv5a}@~AMW<0Mpj7C5>05)g1+4G%y<efON#0MjW&x!LGN`3n?sH|q#8bn^fJ002ov
JPDHLkV1i%+CrkhU
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cc5a303a7567ac7b58d29fe4a78855be73df15eb
GIT binary patch
literal 592
zc$@)H0<ZmvP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nJH7K~y-6rIWvFQ&AMhKi`|Y_ww>yeqfulMq1mZg9)KfDbyjP
z6bDg|Mg^$|MRXB57V4;jI4DjoZ8lw`$s`?J9Q-33x;u(E3C+6>d8xKGZH)&m+{-=Z
zbI$jidu6R<Xlr#WfcXzVuD=})(&~5?J^+vlhk&#?vev#6ERjw@W8ohmtxn!r+m>_}
z*MY_Y_$iWSjqh&lEE{9qN}3><fcj;~h5%^LbR=Q7+sVjAH-sKYS^*3rd03o-F#X%N
z4~c_H-6*P9Y(=PMjJYK!#tu*|_m*@xVRvh%DcF=$1#%p<OaRjt;9?2<)bUjV=IhH=
zb2QAnN+uFB2RE~my}*(Dsr^a-y#Bbm_j&Kj`}%BUKc5cfCAob60iN4~n3IPnYb}x#
z1HBi`d*w&<tIvv=Y!eWE3Mw-&c^+J6Fa&yyjpZc)e|P=K((<L+^T74y05F2_0!)>l
zR6JDOUn7oT25>SdKm4@u^nST8zMA#Zi|T(9$AO8lUe5~WPJAbdVJ;AEUR#-7yVAHl
zHCntGxL)<ZG4KaNjz~<zGF>43X7yq1dTstrxiI$lSUINv%^yI|ZnwV?AI@ZPvPe<{
e>;pghcfSB(SZ@FEXBC_P0000<MNUMnLSTYF5&eMx
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dd0ef8da8a99af443d88a75dcb7bd872928239bf
GIT binary patch
literal 667
zc$@*70%ZM(P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vJg|K~y-6rIfpCQ&AYee>Y?ZQiye{tN((tqLa8d2wg;Qsft!`
zaS#^~q*U>Nf>;%;v{rF2s7Waf6<aKZRza<;1^Y^q+tipe&Fj9;ak%%!XbdLxgAdO0
zcfQy86xsJw0w~8i6#ywEo0Wh+NcP^|1}KW6{0A)D20%x+{n_P%hueU_W`O~A?Sw5M
z0*bP`d(Xc9?cw%Nt;MZ~BG(I&LJ3CWU|N(7{pI7yx5v8%`qF@CC5A2x;Kw?QO@ZxT
z3r9`lvRymQb-w}}KsE#Y1p_EmApQxmc>tkV=CE#A{g2|~(Nj<En}CGI8UG#To`jis
zSG`L@%8cdM&!yzEBgAac(7tw@Ihyq0{sZ+eUo;(-Rai_xv0S$;kp&^-Ov%u%Y(0G>
z0*J=2TFK^J@V7*D$*`@ZiTSyUd#_%I0R=z{{uAUlu$qCzq&t<OGM!qvd*Ifkhs)W_
z24DatAREI>3lgg^yWqMEGL_Fo&qju>54;;o0!7av18}62f53zQ^*b!7kj{W`BT&?}
z>B0DT?}?#%?|~Aq0qB55P1(4xOwNtT${JV}01`yLQl9*fScvSu(GxQryX-+Ko?CSV
z9VGS!%35`yVj5rO*3^-kqa(u)CSI$a1!YeS5AxTf1$~fVTRks6PDMNKTub}h8Y^s?
z_zBgRg-#wi4}`p_RRa*vT%W5=fbF>=eQmW-{sg@`N9@#|{rCU?002ovPDHLkV1l=#
BDLw!I
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..15f010224ba2bbe318a0018fdb7530a77ccbedc2
GIT binary patch
literal 599
zc$@)O0;v6oP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10n|xEK~y-6rISr-6Hyd~pLb?D`Iu>&uSSwou^lnC1d9c=(nu*N
zqGm``5TOVzM06)EvUZ^h5jXk^bfdUZ|A1)o3tWpE!KE%mh;v<J618dUhi7%~J@0+a
zdGCjeG3+)>Co}-oe*h-?<6S{aCrlW_YXDNyJBOG~C}Vggv4WdJ)%MOHrW0n2;ibf7
zY!6l2;AU~Q3+TRYtXh_yO6<i-po4cHRRKVwZbuT)dc%n#b57DVi6&s-2Wa*dB=`K*
z_95}6^3TZ38N-}J&9ZbsQ0xgTC^u2L39|n#*nM}tC8;ej4@|N#k|i{C67qF$vzvDf
zSYKY9ZWS`_L&w(aAX7Yr3U%;<Ezipac=Y1a$IgeZ&+7~MZpIrsBH{A=GdL5-KQPq(
zP$$M1Bq;_a?%y~RTo3o%oyxc^K)5+n3L(D)jz1a#y@QSIIY8>ogQF{}i-mh$(mvc1
z*pOL3`DMs1f}CN<V4(-IfU)tk<G+1!VlAk6S0+5?xccA3PDAb(DlEfz^`GxVG0X-0
z_F6D=_006e{iSs1CGGivFi{u{*<jI*ZMs1E@$Fje>{9VkP)Xn1)Xo+_>knWeT5o(K
lo@^`PVv(c>=mJ0bxnCoVaviVjaUTEx002ovPDHLkV1gCv1gHQ2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8d40d43293be7cbd9e2fc4fce857c1f0bb37fc42
GIT binary patch
literal 683
zc$@*N0#yBpP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w_sDK~y-6rIgQ0R8bViKX(|0k=kf2GTH=zwCO*H2wMaNMJ?R6
zX_HW!FlrHPA}RzIK~#&3e$XP4sd2C=g3t+3ltL>VP^|f(ljDr~#+i9<-n*xT@7bhD
zGj`y>z30N`e$S74mF_<-0KS7^1t219)qLI}(Q~8;P)e!)fHmv^pm|5|<?VC(w*$Vd
z0)48b0|HI>6o=YR@9l2h84Ok{u1{H@5!KQG{%r&UzEkmMho9fSbYPcKs&0i!%=~J_
zjW{xS3$%&tNcu;nbar3c`zYW5QcGig!vM+|Wcn@?rT}!wbRuO-cR!7$!soljEkI!N
zj{gY*5C=(zARPkH0B9}q6<b0AV~&<@M$w+wed2A>gL@Zjgn4G=VPOE7?}zg2hGP+y
zwaC{($?0r7+Sdc<&0*D6m_o7x@bleT$gJp@k7K#(trrG+fn}iN|0hUW$l@o+egMGH
zQXHQ)9-O>9{OJ2!X$dd^3y{rWb^#U!k=fT^<p3l#Uk+cnH_`R@O)?1>t|Aj~L}VRI
zY{-uy3o%&y4B`M_6z%aR(bUcM&an}o04xDzphDHy_(8y!M6xl+4S`c!<$_)`D#N4k
zrJiFKhk7kruegw+o0eWbB1#XP5zOpbpjdXkOeP9_cV5gy9!3&rSHX(wrVIIN)BGOD
zwDgTvu}rw_>d2hOtx{oA!%JAJSwm~&8W421l`4RS+Wxuf2H0*Y;(5Iv<u5opLEz0r
RLU{lH002ovPDHLkV1gn=EN}n-
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..72817605718779cfb4197c3c68576d47069fd8a7
GIT binary patch
literal 593
zc$@)I0<QguP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nSN8K~y-6rIWvFQ&AMhKi~WA%S)P<AJR0HYOFOlq_lzwDh07-
zD54-u6^c@kLI?c=q~N53iXu*qx+sX?CjJ8s4i5eYwQ&?&oE*gFU5ED)OKsX3&vfoR
z=X}mR-+Ql|a|~?lh66DF0Vs6c!65BM;2duO@Fxa<v>S4cmlCts5g2{=kC1kw=p1h(
z7BL}|AAwiG?zO(NR&N?lFC;1`4dwgbj{~57w<8I+Ubj)i1&L*edB70VpmZDTfj_xj
zNK!P`iCoP^)MS`4(t<=ePW7O$1jTEyzqw&&t=^JYm6!wyY&E|E*>e!ifmho8)PVW=
zak^F7XCGUuBfUs&9<p-~)OOX&19<ZM+vg9Te!M<?BHSqE>~V<{zrKK1j3L@te>vxn
zqy!i|xHVQ?SuEWx58D<Xyb&l|g=`Z{zCQ$FVUzJJka_p4I@_Gd-OFaou{gm(`edw4
zW(MT{4e4#fFa!9x&<o$cI=WOH53b~M-YIpzi3wroOsrXYddGL71eOBA)f=M|*B6E_
z9X^=4n9Z2UUZUOKAF^dcFBvlh3_ZP5nL2+qf4O=nxVh~(y8z85VBps4-$@pGvZPrg
fDFQZtpWWDR<brHOHoKK&00000NkvXXu0mjfE@u6_
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bb4cc9044e7e306e73d8c09a5916bf08cd240a76
GIT binary patch
literal 660
zc$@*00&D$=P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10uf0>K~y-6rIbrZRACgye|MOnh!)X8&>#rcfw^iG(I#-yu2rib
zg1~jS30jnd1VKv|B`IyHNl|+k1TBmTr5JS*8z!3v$=EpK-1p-<E$+Q~F~vt89QZhk
z-}gWNbH1ZVp<4j7&RGpWL^$Y4#h3E*>EnQ=Y1)6lGN%A&Z_B(G=sR%~NF5j`&XUOT
zMUg_cSPN&KceG`W04Wh+zk&E`BGy-t;yIB*x9GX9vBA41J7Np=1JlG`3mtdnVC5!=
zjUPz$SJl1Nd4B#a5QNO#8?y-m@GG#|4^AFHS+<(A9eF%5S|9JdU2*}5)$R_1P)K7K
znj?`YP>P!8%czLtf`EL>2)?(U&6Q(#{J=J_n7Io26c}&7EB)IzVO=R%&`ov!Sl72K
zpmv5OkCO*u3R<I^DOY|@&**n9Tv?g`)&VQMD@Yu$K7sx!6s$1k7OlZc*9$|-6}JgE
zfD6dZFtrZGduTp|pavk76>q$6pz`2Jwq6EWks=2OL}Uw0Jg`27UfG{Pd;nTTFgN_N
ze(%Pu(hQ&jO~3{`5@VAF0Xr9ZVtxRnhg?vNX7FWp-puw~{W0NsVnh%#Dobr05lxnR
z1poI&!nD-<V$pv6aHux<=-HoYq`-*6i6GlHEggd#SNg}^HO4RZ7GtuRP~o$OpP(i7
u*&*O?l=l(<1$*0b$p-jQDH6wi7v*20f|oKBqph?60000<MNUMnLSTY8LKr9j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f7d05aae55a3393eede84cdf2751885e0fe9aa3a
GIT binary patch
literal 525
zc$@(Z0`mQdP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10g6dPK~y-6rPI4>R6!Jg@$cO1vOY*QAWDp2XR#tyV!vQxp{R{u
zVPkKj?tkC|?6k186(OJ^7WQIc3h~h-X)K~?yh64zJM&rGy=D{5n#2PKW?<&WoH;Y0
zvfGdlp!g4<U5|H#NVJq^)vN>RjxtN6%#$o;kEow_3{0oY(+ZeY->T*IfwckMl=)Ht
z`_xxzIUWJX(ikMpr_5ZIQ~{^d`QLz+M!g{-$TFJ}9i<b&iK5_Q1c#~%YydY1ZVt!m
z5rf2q2zn752ip7*#|W+fmx04ucC1+b%B7!cELF#?^P2j4!?CwYfB>4^E;9>@+#MwP
z71A<$OI`jqGQ5)*7P|lT9Zs&SFqb7)*sOYAT^f&!{GR}tz|`{>oLlYle!aY=*|X|n
z_1oW(O;`c6CMP-YZl3Gq58k9)w-~c+vscxZ>i4nlB!CHEFL1Ee<MfA*+*|GQX=4M9
zj(?>iB{qOPz!Wg^;2~!g7I{=dF|v4UL_}TY#1L&|DFL>PY{CMFED7KjntLAV^{H&m
P00000NkvXXu0mjfRn+9#
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a939ea98b9ac95e396676984192f39029af30ce9
GIT binary patch
literal 590
zc$@)F0<ryxP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10n155K~y-6os_+6Q&AYke<zJ;iTFXG&_om!EEXJ{9J{rPf{s=w
z`ad|jxuh<N4(+1gV!^?R2=)WFcBxB4b+AZj1VNf>Oq*zL&igocZ@mdNZF1m&vz*`i
zocDdsaV7+iayS4<bh}dVX0t>;;GA<^!!QlYgc_drg#yRo0+Kow(wa=CWJ0w%FLQaa
zK&nevAZb~qlQN;|HnUUH<hyYg!2(HdWy;Egc0;~?US|wQ!@t3F01G6o$aGmIWWw*%
zc)eBT`ol-`#?W?PCj~88Xdotm2SDTRkc{tP$Sa9e@A+7*@+qIA1Snac#aU8olJ3cL
zA$Hm%Z&bntOTiCr06l<f150X7rrS-h`Y*mLEOH0P0Y`yU`rsti5$}NK0C-QWSY-Oz
zRi15ZPyv1eyMWp_TbERjDIdGB%@VWY<BR}92}fzb{ikQ&Bt4aBRHh?)SE~GE_3;yK
z0>i**;5d+JjSW&+(i@p>$#f#wV82ynd2XJ&nGBbJb3i}Pw_l(!ooQ<9_726B4@^!>
zFalfz&H@8KHlEtPp-oKZ{)-u|0OunOM%U>(>`QQo|ExDU2oOez^?>b#@_?0u^+eSb
ctJ9D259yF|oR6zVO8@`>07*qoM6N<$f(8=&xBvhE
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..823cd4f2b0868fd4e511c659e32556630d56804c
GIT binary patch
literal 596
zc$@)L0;~OrP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10ntfBK~y-6rIJl+Q$ZAlpLg!u+@|;DLz*U1O|=FWDXm~4et;OV
z2%;cO6-uQdf*|gNf-7C9DB{YcxKI$mo%jb_2yXlZCBdcO#+3`Px#J=?e$>Xa^{i&*
zoO#Z??;JVj*lBdBI{@<^fZSlcBS@Ee;2f_3Qp{{0(xoovcrMYfOj6?h_8?vAdFOZ~
zv1EuS@c@qkcB_E3UajdFJ(DPlF^b&9XCD9>_B)d3xSEY)&PrU7SO82wl>#^M+4HM*
z07))Q#XVPz9aSUdWV9$z?3a4vSs}+Ig!gB|wO*|)u_`eO<k%2CWg<=!(ZZv!`Ktl*
z{?mMWSHV8CRtE-&3=2fG2&j(q%L91&=yT`8yRR>goQ&2pd3#tQ^_`D+<O!&v5&p|L
zha@Gy;KseF%F@-s?TMmo1F}q#<02tV4B6oj=o_2Jvq1XEn@Zz&Gjk^$nnV4BCCyPn
zT8wi7;r|W!dC-R$z>hLs^y2NomFY^boXL8}P=7cL5h14tX)(t9Kj%aVECoc@R!cLB
zmnY8e-Jd#_4$bVK&a!(rWP?O6k(mO<Z#^#0HO^!&Ojm;Io5~phG`|6Zj;nnk*=#A2
iX0fCgSO>lhaz6mp>1;j2M^pp=0000<MNUMnLSTaJO9XQO
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..85b1781135df7f1a90b2abaddbd3fa9b7d4167be
GIT binary patch
literal 661
zc$@*10&4w<P)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10uo6?K~y-6os>&RRZ$d%zav@^4WfadK@c?!(pi(BCV`V?j+#Xf
zf#Yfv4N5|SprM0aN|VY5YL80<K}AJU>CMDjT6!hX)ayO($Nn35j@&Zwv0%YwZTR-T
z9(!2@H45OMHE01yVyjk_9bQcx+5=dYWo;d{jr{=B*3~?^(6)CMP_<=XpfOG8gbHd@
z-fMVRTVJyisFK8HomdO<^ikh+R0TEavwgVtYWu$WtOT2ZS+N!b;4{n&=Mg?htm)~W
z;hAFx^3Q-|nYn&rR$u@TMdoNFU<APUo*4*y-R|w2@4MVG83M}Gt_uSY2_-sMq%#!-
z#xNU4>X9^L5=QKD^7TmF&{PJ`9#{p-EMX3t95zphm|S%)v1E+CxVE|8u=`UNVAh0H
zTEGZ4Im+~`#KJ%mgRku?r;d;H151Ecy&gyec)Z2t@p8%u?&z@Be)i<IJH;Pi2?&4?
z(3&vA5)LmYai5r30L>JmzP5|S8{PNjr+{**C;$>kf5SwC%NrbWc)UZz0667jxVvNi
z+NE=o9{?LD0X`5>F*em8e1>qy;qVfJosmsxF?pXKbh}PB75bx4P6~0;w9LOFVoj(?
zF~3#<o@?^sqyCe-H)jVP-1<G8DsWN{QpkUsR-J*uK&{Vv7yDY8$1}29p(17jKf$Wl
vXWM}tX*{X`7}(gJt874=rlQO@yD0wv<MNm-3GeMS00000NkvXXu0mjf);1ek
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0cbff3ee35a57184b3029cf17475a39e895da6a3
GIT binary patch
literal 594
zc$@)J0<HatP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10nbT9K~y-6rII~pQ&AX(pZDCK<mT_@QjN8=p)p8FsahLFEJ6t#
z#6KD<h*Bs@Oc0#y>>w^84lb^WAh?N(ql1e!i@3V0ldD3L<B%IHsj)x4(>c7~c@FRQ
zeX`cFSG8$b0P`P!uz%hYq)jVfEw2HRjP4%NrX_26F0tT|r$l3SkT$KnwY-wJ>JU((
zfk%kDQ^3bgvu2E*NlX}gCb>zH0|02)bR@BEn{Kyj&r95pv;>$GMT%U<XXH<99}+(r
z>vn9#T3eAcV~j2%3IM`TV37igXrK%F(79EYv?ehPgbXObej-i~F^9L+?m+<a_UlSL
z+?Raly5>;d7~wP#RZ<kU?Uw`a;?d_XpWc6eIeTVwBa`=!OY(p64UY^dil|pMRI=70
zNii^S=fTPHQe)~~R0!&TJVFZ8$TN#WYB&UXjg8~EK=Am@*@bFt?0%4TkM<0QEK@{O
z$x%U@wqwhPW0(QFbk@r}eRpwXyqvq1$@!=HV{r%wIYPu7X-fax6U8te$gHj%D_vMU
zynJvndnrh})BQT1XgFjbq7%pTfz;h6^E313Ca#Q^bGQE*XB(i|1Wc^k<`3e_jud~^
gmDB|`fM0#@H;F%P+zL{-G5`Po07*qoM6N<$f=OWl2mk;8
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e51a56935cb40256bee27e88ac569395403aa882
GIT binary patch
literal 675
zc$@*F0$lxxP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w765K~y-6os>;TR8bVie|H>Xk{}5e+D=-wjusJ7t7ucSaM4y=
z6os2M(xy$6ND$P{C?zA?D3uO_Fa$xin3PD%Pf&-+Ow;Gg_}<L>x~GNj4bM!{IdI{g
zbK!UY=l<`#DkE(Ia7uM601=_uh=r46?%FXxDW$51C1?bop{Z`5z3cQ5AXY6f)=Vq4
z)T3hRT+7XqJq^d}5>dqmg4J@AW?HG?FozN~R|jTW`tNj~ZB$AfSfR4T5CD@!7I=!r
z!T0p?O4e+<a-x3(@B!J6F%=kq!#Y`BVUY#UcF9ZHWxpr&a(<}m)~Evr?Ctmt7=WNz
zCCw^n1Py@JvgWz^4Z?))%am1gr!O}3<wAJ4!7f-BE_n>bG5Czl+OBmG3Zmt^wdFoM
zU*9_j=sjW4u*hOC#yX!WHOKZBzmER8cm2ZfFi-$W@&AD|E=8u<AhVtOV$Dx(bl<)_
z())91D-YO!1IV5*AB#=Cu*!Q}@&K~-!yJ0jk$IGSF_#01fg&65MPw&T@F*~a!5Bqm
z5d7^ni|%ByZ?3cR#>X*W3&;ayz$J2R;vkqTU@%Ue34BT+Sr<0#%*^=j!S+k3Vb{@S
z0I`C$^xsz`KFtFhj7p(wdEb_1@~PL4CzJ1<&n^cF%wX67<e#R+Ly%+p_dmQ{8tQ0C
zuLNsWM1{vbUP9%}&Lp1Q1rkB(MgSW2_s>NQ@Pbw(90&a<{{Vh5HtaKo;cEZ@002ov
JPDHLkV1kcwEwKOq
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..758a8f95e38e637827ec5027e7f383454bba85b6
GIT binary patch
literal 596
zc$@)L0;~OrP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10ntfBK~y-6rIO8RQ&AL!zjbnRlbfWuDYj`6NN5_Qq^4@qiYP(}
z1w~Pe7Q|92N=)zxIujg7C*sH_s1w0a+q{4S-#~EWTpc-aA~ZP;axa$D*dN#E9M(SH
zVeP$Tt>v`p(y;*MKLCDsJ{6=(Cx&GgAVu!vkS-lr%Ui^9oD6kZCxdk9WUS@A!~+M9
zIxS-OIL8I-_Sy|&v@KDL;IhCIl1u@hQPYvco^3n*zP%;!Skhg<_>`!zMuIbcYC}ly
zsL=1(s<pN%sb-AsA+i9%P-cZ0R?tuvw9|Xql(Z=^2lxyr$s`4q$WteF*d9Otv;B3w
znVyKhia2H_G>Tjy&mumhBl{Hr*m?cw%jb{Z-<`Xb+fQWN1xfBtzTuL>r-T`ljg+jl
zNKycdZERhtTyM?3@UvbMP#m9W8sxZ0l*DKV3>q86a{%vo_r~&kqwq4Gbj}Zq2oubb
zXOT&&m;>8!Xv6``08wu&n%eqsdp%!CKTM?E%i&lYJf@f@Pn~hf|J)M=Fc(OzZeA!i
z9-Y0PogTXrPdam9oyYiS$WX*c5Yq(`oi|r&OE-(Fxk~!kU*jABGzWmOJ=^|4a5<KO
i&-#-3z&`LR^nL@y*KI!fvNTu#0000<MNUMnLSTY`3jufl
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5e41f98397fa5593ef01fc0a9c408965e9eea201
GIT binary patch
literal 680
zc$@*K0$2TsP)<h;3K|Lk000e1NJLTq000vJ000sQ1^@s6xeVoL00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wqaAK~y-6os`c@R8bViKX;mF5+RwDwr$zYO{)l6MidlCw22T~
zg#7_Qi&{uY1VM`;BejfNCCQA4H0YuXGKat^e^vfSXSC7uIX~XKdGFoR!Z*{HNi%cc
zz~vnH-0%5uuj-c;0XU;N6o80Ot@#Rv&ZUb%Kq;lFht*OKK(L|a)#ba#Y5`xhKwl%x
z1gJy#)QQurN4tWDYXYT;D}o*15REkB=OFt7`_4U@Y3gn5I9{)ms#u{iWkUcqnJ3B<
zT=KY%jwcs0Emw~84goG8<qW0>1IV&YjF%WJ0_eQy4CHfe*T{>np~u%o^MJtK6W;*?
z5H#P3Fh>MIZ^yJG9b3N^VM4nyX{PL{OAS3s1$g0tU9f^#7$k@i=OY=CyYeDziIy+9
zw0-YFU3VX#_k@+2!6FI9`N8{Q%(mS5$<fue8z;kIU<)w){{y+$tTDwhV*qGZvJ0_a
z9c^cax_>UD4Zs5Ofb0pg$+E&H<{2i30U+zknb5QAWA}%j&n^KePmu+<BC->vaY!;r
zf^pWEMsNWzQ+8~mXSV&})pz4S8ZdwyU{kU-eh@a8BSDl^CU7vf$%0OAT4Ud$Ykjv)
z4Thb(&UlclSC;;JMf`8MgULoQU}c@p%hSeS=s|4YP3KJ9Q;_l8@*w{ln!f<DE%)|^
z{)JF`Q)I=<WlK~zl<^XZJv$$GdJ_l~`~L@^p}c>tbO4T5iWI!kkMcM3RX6=)$EXSb
O0000<MNUMnLSTZC&ntES
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b3c8e68ebac2e010fa59c10c76f41f140de7949a
GIT binary patch
literal 608
zc$@)X0-ybfP)<h;3K|Lk000e1NJLTq000pH000sQ1^@s6z4<j%00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10o_SNK~y-6rINpE6hRcnKW}z#cK3GI+q(_N-US6uwnzvEhec8u
ztO63rsX-(*f&}bhWn*Ju5wJ>QE80kGf`37B+uIzPYy2N9gA#TuvWq5{Ge3OQ%zWQ`
z-uKNLF~)G&$g+_EQ2zm_mFr7EvTWpl`3&HB`r?o*8;LRI1IVJ*Hffq%43cG|$QbiU
zL>^j}B25#tw$BgQ+xvDK7>dZMQbL+0c%BA8CQU~~7!3C9JkRfl$P*D+0hI4MbUIBO
zr}8JagcO(Bd7jT0V`fBTPAPQ{Xdda%YSn4AB1GhP!QI`jeGz#fBC|k^6XCiQrlvv~
zjR39f(_I5<XD92|YSA0ZvOA^FY+fObLww&k^Svy9?d^Bphr=%)yWN|Iz905PL?0ad
z!nQ4fz#X$c=EN9-9A#O6v%dcP#`5y&t0-#p0nyqfNg^5zAKSJjLx8fH05;%lZoXaY
z_2yr@uGcN~TFoPlL!zj9%-z_C3sC`;YSj<6w%$LUp1$_T_k;Q39LrMF>ppQD5{B+S
z|A`crG!U$<J-xoPv~oX5rtiA0H(Ta8jy)N2qD8A{Qv=nFjhAx^3%4G$+gG2R+Rhn3
u^%u|?4EBFeY|a%$v0OxQ;1Kv(YQF)Bz;^29$+J=b0000<MNUMnLSTZ$xeOTq
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..93a69cc789aeeba65a66e31418160bbbc9bef692
GIT binary patch
literal 620
zc$@)j0+aoTP)<h;3K|Lk000e1NJLTq000sI000yS1^@s6fR}Ab00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10qIFZK~y-6rIf#l8c`I7zdPeNBr?nliWY*6Rf;8}_W`mHi{ud!
zpCSb87GmKxG4CLRg<zK=g6VBi><S@E8k_L}#$htWW?XNIoe|gQy2<|F!u@mZ$L}7_
zJwhqPwuBG@K<zr*Be5NuLbUOC{G?bcz5<#+BR#$V&Vi3o%Ab2dLI}}nwTy1J`_?qg
zcR+rRfh*ty_#mZR-2!EhUa$8>*Yy^F>$=#sO`%W#AdX|gFeC_q4EPmzDWzNqrPTU4
zlgXrGn&zot7}RPtEX&$yCyF9`-zP~DfR2>%eFoA-qtQ{hT>b{+>-G9x$R=zyn`O^z
zYN;FHIL>Pz@4D_m2!Lf-xULIe0&Okb7n-Iu0BqYn2+6b&+stJkUDuxi>%>l{(>o!a
z=dELbh6adqJV==%mdoXL!!Vx5ag5_Qc%FCgavaCm^g;s^ppqn+0)%0BZx<V}=UKAV
zd_MmK{0@SED2fh3qA1D=^9ndygWB!(kHunf3gG+xov^GRQ=LdDFV_VL<f_%`qv3G)
z*)+{(@PID@7?n!p@nA4`Q!14@LWuwSw15s6fZ6Z&kB*OzU$DE4oJlD!H_3mskrb8#
za!RRRdlR*#+~z_lrGyaI+?2%ieIam@ms?8P>k3%@3+N9M9LSaNI{$+J0000<MNUMn
GLSTZ^*b&A6
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..72107d151f97907425c33874e16c7f2ac0c99e0b
GIT binary patch
literal 619
zc$@)i0+juUP)<h;3K|Lk000e1NJLTq000sI000yS1^@s6fR}Ab00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10q99YK~y-6rIbI58bKI`pV?h?v+IJ*st9%qLy9Bl7f2Bc)7mBZ
z6d_=Dkm?YEo!=lF1iOG~(urM)J0avqVPR!qC2V%ti+fIr+m$_|=Oy=pf%)^!!*5>R
zd4*DnT?rusfZBI>Kw>vGfoPM-<f-eruYe}dNRBUo3*e)a^5;R25JI%u?Od<dduN*F
zdmw+nz%_6R^re)WJD?QO@Atpxy50hC90%LBF-;SID2fPz0N?jh;8)<KlyW1KQrqWD
zr_-)!nrDV#P%f9TENicwFbr8Pm&9=l(3MhtNI}|oJU*#ZD&K&7tyVh-$-)+kMf%L9
zmbek6Qt362cO2&^1i-Q^9LE7D0B^KpU+B8t0I+TQC?r)TwrONQ&wy=WXS3P85YO|r
zu|PuuL^2+w)DdwUf6wJ|FQO=-SS;ds-qFiZ6s6Nk4N!nuuh&z6AP64pA`^R&CR@$t
z^G`~t-@fk?hT&027=~$KUIXV_P^Z)Rv0AOp0G7+;y|A<(6P-#aueJpV81;Jn$!IkC
zTqqQt!y~>3kgHa!)^Ip{>$+}N2=RZP7SMqlP#6pbC#_bi&HgrWE~UK6lK*NW3CsWt
zrPQy3iQ18oT_~lL5aNd0lDK&&1a9+kM@f6#0P(+o{s4i7%Y)2RiiiLJ002ovPDHLk
FV1l8B4mAJ(
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4509b17c0e9d2bf70c6dff3f17386d721eabb493
GIT binary patch
literal 615
zc$@)e0+{`YP)<h;3K|Lk000e1NJLTq000sI000yS1^@s6fR}Ab00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10pv+UK~y-6rIfLX8c`I6zdPeNBr?nliWY*6Rf;8}_W`o77Re(d
zd5RFQ3#^4{V%|Xr3&Ac$1cR+jid`WP(%9$&48vrKjjlI^b7kCUb`yV?V(vYB{O9M~
zBa~9ymJmV!sC}0QByQKH5MwkNJt`K9&w(b;NUyJeOW=c)^2b4t5JI$CEvwV%ytZxo
z9LOIqa1Fcx-b*RhJ0K0|cDtWV(`*6wzK`p=6bc0Zk|ZIDBEm4#z%RfvDdk!yrMB%%
zCX=>p+ixw)qE@TnIL=->aU3(B&si>)0BtGdI}I|1!{JG}T>c8=>-G8$WICM!5Cp*v
zY&M(eHk(H3MtGk00?7Nmf6z%*j^p6_K7b9pG<42}VKe|-*S!;>m8os!G{`i~$G|pN
z-A-27vmgkzwLrrFMEV^i?TFQC_06)Zvm{CIJZ~r1ePP3998z5wfCAKVxtsz-QFLz?
znc7PowpuI}AAw(C7!t?vosc+=^<Z8D7djsU$dAY4w&!{0M-3#9t5&NI27|#T+qR#;
z5l;lLDwWE^e!u^!R4TQF5dZgR0TZwQyVvWToSvROW&awvkWzlnlK)sEDJ%!%lu|$c
z7I;><?2l4P2_bISjKs}-A+X71N9lT91FL@l{RR@j%iQoSz1RQ%002ovPDHLkV1lbS
B1%&_r
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..eaf364177d64f34204a1578c151dc027b68ce72d
GIT binary patch
literal 614
zc$@)d0-61ZP)<h;3K|Lk000e1NJLTq000sI000yS1^@s6fR}Ab00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10pm$TK~y-6rIf#l8c`I+e|P@qWX6HD7!|>8;F4kq`T{9pVICpL
zQ-pwBV5=YmJKrEI1iOG~(uswTVpj-+6c$z%wv!oV<E%G@Gcs;8yNMr6G4~#ReCOlb
zBa~9yl@LMzs6&@WB<|Lx5N$G<JoY^A1<(ST>Gd^m1$>ZF{x}K}LWoYMWA=KzH<o2x
z0EHt4Zh*HyUrM>z17(nYzyDd+^)`U(x;T!5Wmy2kaZDJ71VNAizW~prlpCRx+O;#A
z&AOIly)z7hN~MBr+XwALQN(JsB1sZ}u9Wh92GYjk@p-jc{R$N7_4*!UKA!{N`~Dtm
zxm;##wzSlZI6FIg2^3t{J?bPc+qQ9C7oZ5d(z2X&U2g(7j&m<0Q?9mU<Umh=U9ed@
zdF9W1-`~{&O$`v~cakzkBuVnkG|gvm98)Tl_JTbWHf+Zs)wKpFK&{v789*3@4|b8O
zy~@H?i^bxjQtDR_1VmAEFC>bhY%p(t%Pb!aC`_l*Zn<2(IB6gOqtR$Q8jVJuipAnn
zIN^x^X02AUhr{7(&-1!Mi2r-EfDV{IaWEL1x7+Owhu6rZl=6F?{KpzeVFq9*rGEY`
z@Vt!tk5WnrA#T}@#O*^Nu+3#p>3ZD&$-jVp1N9Wn>y(Db;s5{u07*qoM6N<$g7y#w
AbN~PV
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Footer.html
@@ -0,0 +1,263 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<script type="text/javascript;version=1.8">
+/* [pseudo_color, pseudo_background, bubble_borders] */
+const elements_lightness = [[75, 94, 80], [75, 94, 80], [70, 93, 75], [65, 92, 70], [55, 90, 65], [48, 90, 60], [44, 86, 50], [44, 88, 60], [45, 88, 70], [45, 90, 70], [45, 92, 70], [45, 92, 70], [45, 92, 70], [45, 92, 70], [45, 92, 70], [45, 92, 70], [45, 92, 70], [45, 92, 70], [45, 92, 70], [60, 92, 70], [70, 93, 75], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80], [75, 94, 80]];
+
+const bubble_background = "hsl(#, 100%, 97%)";
+const bubble_borders = "hsl(#, 100%, #%)";
+const pseudo_color = "hsl(#, 100%, #%)";
+const pseudo_background = "hsl(#, 100%, #%)";
+
+var alternating = null;
+
+function setColors(target)
+{
+ var senderColor = target.getAttribute("senderColor");
+
+ if (!senderColor)
+ return;
+
+ var regexp = /color:\s*hsl\(\s*(\d{1,3})\s*,\s*\d{1,3}\%\s*,\s*\d{1,3}\%\s*\)/;
+ var parsed = regexp.exec(senderColor);
+
+ if (!parsed)
+ return;
+
+ var senderHue = ((Math.round(parsed[1]/10))*10)%360;
+ var lightness = elements_lightness[senderHue/10];
+
+ target.style.backgroundColor = bubble_background.replace("#", senderHue);
+ target.style.borderColor = bubble_borders.replace("#", senderHue)
+ .replace("#", lightness[2]);
+
+ var pseudo = target.getElementsByClassName("pseudo")[0];
+ pseudo.style.color = pseudo_color.replace("#", senderHue)
+ .replace("#", lightness[0]);
+ pseudo.style.backgroundColor = pseudo_background.replace("#", senderHue)
+ .replace("#", lightness[1]);
+
+ var div_indicator = target.getElementsByClassName("indicator")[0];
+ var imageURL = "url('Bitmaps/indicator_" + senderHue;
+ if (target.classList.contains("incoming")) {
+ // getComputedStyle is prohibitively expensive, and we need it only to
+ // know if we are using an alternating variant, so we cache the result.
+ if (alternating === null) {
+ alternating = document.defaultView.getComputedStyle(div_indicator, null)
+ .backgroundImage.endsWith('_alt.png")') ? "_alt" : "";
+ }
+ imageURL += alternating;
+ }
+ div_indicator.style.backgroundImage = imageURL + ".png')";
+}
+
+
+function prettyPrintTime(aValue, aNoSeconds) {
+ if (aValue < 60 && aNoSeconds)
+ return "";
+
+ if (aNoSeconds)
+ aValue -= aValue % 60;
+
+ let valuesAndUnits = window.convertTimeUnits(aValue);
+ if (!valuesAndUnits[2])
+ valuesAndUnits.splice(2, 2);
+ return valuesAndUnits.join(" ");
+}
+
+// The "shadow" constant is the minimum acceptable margin-bottom for a bubble
+// with a shadow, and the minimum spacing between the bubbles of two messages
+// arriving in the same second. It should match the value of margin-bottom and
+// box-shadow-bottom for the "bubble" class.
+const shadow = 3;
+const coef = 3;
+const timebeforetextdisplay = 5 * 60;
+const kRulerMarginTop = 11;
+
+const kMsPerMinute = 60 * 1000;
+const kMsPerHour = 60 * kMsPerMinute;
+const kMsPerDay = 24 * kMsPerHour;
+
+function computeSpace(aInterval)
+ Math.round(coef * Math.log(aInterval + 1))
+
+var lastMessageTimeout;
+var lastMessageTimeoutTime = -1;
+
+/* This function takes care of updating the amount of whitespace
+ * between the last message and the bottom of the conversation area.
+ * When the last message is more than timebeforetextdisplay old, we display
+ * the time in text. To avoid blinking Mac scrollbar and visual distractions
+ * for some very sensitive users, we update the whitespace only when a new
+ * message is displayed or when the user switches between tabs. While the
+ * conversation is visible, this function is called by timers, but we will
+ * only update the time displayed in text (this behavior is obtained by
+ * setting the aUpdateTextOnly parameter to true; otherwise it is omitted).
+ */
+function handleLastMessage(aUpdateTextOnly)
+{
+ if (window.messageInsertPending)
+ return;
+
+ var intervalInMs = Date.now() - lastInsertTime * 1000;
+ var interval = Math.round(intervalInMs / 1000);
+ var p = document.getElementById("lastMessage");
+ var margin;
+ if (!aUpdateTextOnly)
+ margin = computeSpace(Math.max(intervalInMs, 0) / 1000);
+ var text = "";
+ if (interval >= timebeforetextdisplay) {
+ if (!aUpdateTextOnly)
+ p.style.lineHeight = (margin + shadow) + "px";
+ p.setAttribute("class", "interval");
+ text = prettyPrintTime(interval, true);
+ margin = 0;
+ }
+ p.textContent = text;
+ if (!aUpdateTextOnly) {
+ p.style.marginTop = (margin - shadow) + "px";
+ if (autoScrollEnabled())
+ scrollToElement(p);
+ }
+
+ var next = timebeforetextdisplay * 1000 - intervalInMs;
+ if (next <= 0) {
+ if (intervalInMs > kMsPerDay)
+ next = kMsPerHour - intervalInMs % kMsPerHour;
+ else
+ next = kMsPerMinute - intervalInMs % kMsPerMinute;
+ aUpdateTextOnly = true;
+ }
+
+ // The setTimeout callbacks are frequently called a few ms early,
+ // but our code prefers being called a little late, so add 20ms.
+ lastMessageTimeoutTime = next + 20;
+ lastMessageTimeout =
+ setTimeout(handleLastMessage, lastMessageTimeoutTime, aUpdateTextOnly);
+}
+
+var lastInsertTime = 0;
+function updateLastInsertTime()
+{
+ let insertTime = document.getElementById("insert").getAttribute("time");
+ if (insertTime > lastInsertTime)
+ lastInsertTime = insertTime;
+
+ if (lastInsertTime && lastMessageTimeoutTime != 0 && !document.hidden) {
+ clearTimeout(lastMessageTimeout);
+ setTimeout(handleLastMessage, 0);
+ lastMessageTimeoutTime = 0;
+ }
+}
+
+function visibilityChanged()
+{
+ if (document.hidden) {
+ clearTimeout(lastMessageTimeout);
+ lastMessageTimeoutTime = -1;
+ }
+ else if (lastInsertTime)
+ handleLastMessage();
+}
+
+function checkNewText(target)
+{
+ var nicks = target.getElementsByClassName("ib-nick");
+ for (var i = 0; i < nicks.length; ++i) {
+ var nick = nicks[i];
+ if (nick.hasAttribute("left"))
+ continue;
+ var hue = nick.getAttribute("nickColor");
+ var senderHue = ((Math.round(hue / 10)) * 10) % 360;
+ var lightness = elements_lightness[senderHue / 10];
+ nick.style.backgroundColor = pseudo_background.replace("#", senderHue).replace("#", lightness[1]);
+ nick.style.color = pseudo_color.replace("#", senderHue).replace("#", lightness[0]);
+ nick.style.borderColor = bubble_borders.replace("#", senderHue).replace("#", lightness[2]);
+ }
+
+ if (target.tagName == "DIV" && target.classList.contains("bubble")) {
+ setColors(target);
+
+ var prev = target.previousSibling;
+ var shouldSetUnreadRuler = prev && prev.id && prev.id == "unread-ruler";
+ var shouldSetSessionRuler = prev && prev.className && prev.className == "sessionstart-ruler";
+ // We need an extra pixel of margin at the top to make the margins appear
+ // to be of equal size, since the preceding bubble will have a shadow.
+ var rulerMarginBottom = kRulerMarginTop - 1;
+
+ var insertTime = document.getElementById("insert").getAttribute("time");
+ if (lastInsertTime && insertTime >= lastInsertTime) {
+ var interval = insertTime - lastInsertTime;
+ var margin = computeSpace(interval);
+ let isTimetext = interval >= timebeforetextdisplay;
+ if (isTimetext) {
+ var p = document.createElement("p");
+ p.className = "interval";
+ if (shouldSetSessionRuler) {
+ // Hide the hr and style the time text accordingly instead.
+ prev.classList.remove("sessionstart-ruler");
+ prev.style.border = "none";
+ p.classList.add("sessionstart-ruler");
+ margin += 6;
+ prev = p;
+ }
+ p.style.lineHeight = (margin + shadow) + "px";
+ p.style.marginTop = -shadow + "px";
+ p.textContent = prettyPrintTime(interval);
+ target.parentNode.insertBefore(p, target);
+ margin = 0;
+ }
+ target.style.marginTop = margin + "px";
+ if (shouldSetUnreadRuler || shouldSetSessionRuler) {
+ if (margin > rulerMarginBottom) {
+ // Set the unread ruler margin so it is constant after margin collapse.
+ // See https://developer.mozilla.org/en/CSS/margin_collapsing
+ rulerMarginBottom -= margin;
+ }
+ if (isTimetext && shouldSetUnreadRuler) {
+ // If a text display follows, use the minimum bubble margin after the
+ // ruler, taking account of the absence of a shadow on the ruler.
+ rulerMarginBottom = shadow - 1;
+ }
+ }
+ }
+ updateLastInsertTime();
+ if (shouldSetUnreadRuler || shouldSetSessionRuler) {
+ prev.style.marginBottom = rulerMarginBottom + "px";
+ prev.style.marginTop = kRulerMarginTop + "px";
+ }
+ }
+ else if (target.tagName == "DIV" && target.id == "insert") {
+ updateLastInsertTime();
+ }
+ else if (target.tagName == "P" && target.className == "event") {
+ let parent = target.parentNode;
+ // We need to start a group with this element if there are at least 4
+ // system messages and they aren't already grouped.
+ if (!parent.grouped && parent.querySelector("p.event:nth-of-type(4)")) {
+ var p = document.createElement("p");
+ p.className = "eventToggle";
+ p.addEventListener("click", function (event)
+ event.target.parentNode.classList.toggle("hide-children"));
+ parent.insertBefore(p, parent.querySelector("p.event:nth-of-type(2)"));
+ parent.classList.add("hide-children");
+ parent.grouped = true;
+ }
+ updateLastInsertTime();
+ }
+}
+
+MutationObserver(function(aMutations) {
+ for (let mutation of aMutations)
+ for (let node of mutation.addedNodes)
+ if (node instanceof HTMLElement)
+ checkNewText(node);
+}).observe(document.getElementById("ibcontent"),
+ {childList: true, subtree: true});
+
+document.addEventListener("visibilitychange", visibilityChanged);
+</script>
+
+<p id="lastMessage"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Incoming/Content.html
@@ -0,0 +1,7 @@
+<div class="bubble %messageClasses%" senderColor="%senderColor%">
+<div class="indicator">
+<p class="pseudo">%sender%<span class="time"> - %time{%H:%M}%</span></p>
+<p class="%messageClasses%" title="%time%">%message%</p>
+<div id="insert" time="%timestamp%"/>
+</div>
+</div>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Incoming/Context.html
@@ -0,0 +1,7 @@
+<div class="bubble context %messageClasses%" senderColor="%senderColor%">
+<div class="indicator">
+<p class="pseudo">%sender%<span class="time"> - %time{%H:%M}%</span></p>
+<p class="%messageClasses%" title="%time%">%message%</p>
+<div id="insert" time="%timestamp%"/>
+</div>
+</div>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Incoming/NextContent.html
@@ -0,0 +1,3 @@
+<hr/>
+<p class="%messageClasses%" title="%time%">%message%</p>
+<div id="insert" time="%timestamp%"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Info.plist
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActionMessageTemplate</key>
+ <string>%sender% %message%</string>
+
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+
+ <key>CFBundleGetInfoString</key>
+ <string>Instantbird Bubbles Message Style</string>
+
+ <key>CFBundleIdentifier</key>
+ <string>org.instantbird.bubbles.message.style</string>
+
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>1.0</string>
+
+ <key>CFBundleName</key>
+ <string>Bubbles</string>
+
+ <key>CFBundlePackageType</key>
+ <string>AdIM</string>
+
+ <key>DefaultBackgroundColor</key>
+ <string>FFFFFF</string>
+
+ <key>DefaultVariant</key>
+ <string>Blue_-_Red_Alternating</string>
+
+ <key>DisableCustomBackground</key>
+ <false/>
+
+ <key>MessageViewVersion</key>
+ <integer>4</integer>
+
+ <key>ShowsUserIcons</key>
+ <true/>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/NextStatus.html
@@ -0,0 +1,3 @@
+<hr/>
+<p class="%messageClasses%">%time% - %message%</p>
+<div id="insert" time="%timestamp%"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Status.html
@@ -0,0 +1,4 @@
+<div class="bubble %messageClasses%">
+<p class="%messageClasses%">%time% - %message%</p>
+<div id="insert" time="%timestamp%"/>
+</div>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Blue_-_Green.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Blue_-_Green_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_120_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Blue_-_Pink.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_320.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Blue_-_Pink_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_320_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Blue_-_Red.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_0.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Blue_-_Red_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_0_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Green_-_Blue.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Green_-_Blue_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_240_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Green_-_Purple.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_270.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Green_-_Purple_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_270_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Green_-_Red.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_0.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Green_-_Red_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_0_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Blue.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Blue_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_240_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Pink.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_320.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Pink_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_320_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Purple.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_270.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Purple_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_270_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Red.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_0.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Grey_-_Red_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(240, 20%, 97%);
+ border-color: hsl(240, 20%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(240, 20%, 75%);
+ background-color: hsl(240, 20%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_grey.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_0_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Pink_-_Blue.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_320.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Pink_-_Blue_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_320.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_240_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Pink_-_Purple.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_320.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_270.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Pink_-_Purple_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_320.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_270_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Purple_-_Green.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_270.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Purple_-_Green_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_270.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_120_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Purple_-_Pink.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_270.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_320.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Purple_-_Pink_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(270, 100%, 97%);
+ border-color: hsl(270, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(270, 100%, 75%);
+ background-color: hsl(270, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_270.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(320, 100%, 97%);
+ border-color: hsl(320, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(320, 100%, 75%);
+ background-color: hsl(320, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_320_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Red_-_Blue.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_0.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_240.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Red_-_Blue_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_0.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(240, 100%, 97%);
+ border-color: hsl(240, 100%, 80%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(240, 100%, 75%);
+ background-color: hsl(240, 100%, 94%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_240_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Red_-_Green.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_0.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.incoming > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_120.png') no-repeat center left;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/Variants/Red_-_Green_Alternating.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.bubble.outgoing {
+ background-color: hsl(0, 100%, 97%);
+ border-color: hsl(0, 100%, 80%);
+}
+
+.outgoing > .indicator > .pseudo {
+ color: hsl(0, 100%, 75%);
+ background-color: hsl(0, 100%, 94%);
+}
+
+.outgoing > .indicator {
+ margin-left: -17px;
+ padding-left: 32px;
+ background: url('../Bitmaps/indicator_0.png') no-repeat center left;
+}
+
+
+.bubble.incoming {
+ background-color: hsl(120, 100%, 97%);
+ border-color: hsl(120, 100%, 70%);
+}
+
+.incoming > .indicator > .pseudo {
+ color: hsl(120, 100%, 45%);
+ background-color: hsl(120, 100%, 92%);
+}
+
+.incoming > .indicator {
+ margin-right: -19px;
+ padding-right: 34px;
+ background: url('../Bitmaps/indicator_120_alt.png') no-repeat center right;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/bubbles.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<svg xmlns="http://www.w3.org/2000/svg">
+ <filter id="desaturate">
+ <feColorMatrix type="saturate" values="0.4"/>
+ </filter>
+</svg>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/bubbles/main.css
@@ -0,0 +1,189 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+body {
+ margin: 0;
+ padding: 0;
+ background: -moz-linear-gradient(top, -moz-dialog, -moz-default-background-color) fixed;
+}
+
+p {
+ font-family: sans-serif;
+ margin: 0;
+ padding: 0;
+}
+
+.bubble {
+ margin: 20px 20px 3px;
+ padding: 0;
+ border-width: 2px;
+ border-style: solid;
+ border-radius: 10px;
+ box-shadow: rgba(0, 0, 0, 0.3) 1px 1px 3px;
+}
+
+#Chat:not(.log) > .bubble:not(.context):not(.event) {
+ -moz-animation-duration: 0.5s;
+ -moz-animation-name: fadein;
+ -moz-animation-iteration-count: 1;
+}
+
+@-moz-keyframes fadein {
+ from {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1.0;
+ }
+}
+
+.bubble.context:not(:hover) {
+ filter: url("bubbles.svg#desaturate");
+}
+
+.indicator {
+ margin: 0;
+ padding: 9px 15px 10px 15px;
+}
+
+.bubble.event {
+ padding: 4px 15px 4px 15px;
+ background-color: hsl(0, 0%, 99%);
+ border-color: hsl(0, 0%, 85%);
+ box-shadow: rgba(0, 0, 0, 0.1) 1px 1px 3px;
+}
+
+.pseudo {
+ display: inline-block;
+ font-size: smaller;
+ font-weight: bold;
+ margin: -9px 0px 3px -15px;
+ padding: 0px 15px 1px 15px;
+ /* border-top-left-radius = (border-radius - border-width) of div.bubble,
+ see bug 1775 for an explanation */
+ border-top-left-radius: 8px;
+ border-bottom-right-radius: 10px;
+}
+
+.pseudo > .time {
+ display: none;
+}
+
+.bubble:hover > .indicator > .pseudo > .time {
+ display: inline;
+}
+
+.bubble > .indicator > hr,
+.bubble > hr {
+ margin: 3px 0px 1px 0px;
+ height: 2px;
+ border-style: none;
+ border-top: 1px solid rgba(0, 0, 0, 0.07);
+ border-bottom: 1px solid rgba(255, 255, 255, 0.5);
+}
+
+.interval, #lastMessage {
+ text-align: center;
+ color: hsl(0, 0%, 60%);
+}
+
+#lastMessage {
+ line-height: 20px;
+}
+
+p.nick {
+ font-weight: bold;
+}
+
+p.action {
+ font-style: italic;
+}
+
+p.action:before {
+ content: "*** ";
+}
+
+p.event {
+ color: hsl(0, 0%, 60%);
+}
+
+p.event *:-moz-any-link:not(:hover) {
+ color: hsl(0, 0%, 60%);
+ text-decoration: none;
+}
+
+p.event *:-moz-any-link:hover {
+ color: hsl(0, 0%, 25%);
+}
+
+#Chat {
+ white-space: normal;
+}
+
+p *:-moz-any-link img {
+ margin-bottom: 1px;
+ border-bottom: solid 1px;
+}
+
+#unread-ruler {
+ border-top: 1px solid rgba(0, 0, 0, 0.16) !important;
+ border-bottom: 1px solid rgb(255,255,255) !important;
+}
+
+.sessionstart-ruler {
+ margin: 0;
+ width: 100%;
+ border: none;
+ min-height: 13px;
+ background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(0,0,0,0.18));
+}
+
+
+/* used by javascript */
+.eventToggle {
+ cursor: pointer;
+ min-height: 20px;
+ margin-left: -24px;
+ padding-left: 24px;
+ background: url('Bitmaps/minus.png') no-repeat left top;
+ margin-bottom: -20px;
+ width: 0;
+}
+
+.eventToggle:hover {
+ background-image: url('Bitmaps/minus-hover.png');
+}
+
+.hide-children > .eventToggle {
+ width: 100%;
+ margin-bottom: -3px;
+ background-image: url('Bitmaps/plus.png');
+}
+
+.hide-children > .eventToggle:hover {
+ background-image: url('Bitmaps/plus-hover.png');
+}
+
+.hide-children > .eventToggle:after {
+ content: "\2026"; /* … */
+ color: hsl(0, 0%, 60%);
+}
+
+.hide-children > :-moz-any(p.event, hr):not(:first-of-type):not(:last-of-type) {
+ display: none;
+}
+
+.ib-nick {
+ font-size: smaller;
+ border: 1px solid;
+ border-radius: 6px;
+ padding: 0 0.3em;
+}
+
+.ib-nick[left] {
+ color: hsl(0, 0%, 60%);
+ background-color: hsl(0, 0%, 99%);
+ border-color: hsl(0, 0%, 85%);
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Footer.html
@@ -0,0 +1,49 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<script type="text/javascript;version=1.8">
+const p_border_top = "1px solid hsla(#, 100%, 80%, 0.4)";
+const p_background = "-moz-linear-gradient(top, hsla(#, 100%, 80%, 0.3), hsla(#, 100%, 80%, 0.1) 30px)";
+const nick_background = "-moz-linear-gradient(top, hsla(#, 100%, 80%, 0.3), hsla(#, 100%, 80%, 0.1) 1em)";
+
+function setColors(target)
+{
+ var senderColor = target.getAttribute("senderColor");
+
+ if (!senderColor)
+ return;
+
+ var regexp = /color:\s*hsl\(\s*(\d{1,3})\s*,\s*\d{1,3}\%\s*,\s*\d{1,3}\%\s*\)/;
+ var parsed = regexp.exec(senderColor);
+
+ if (!parsed)
+ return;
+
+ var senderHue = parsed[1];
+
+ target.style.borderTop = p_border_top.replace("#", senderHue);
+ target.style.background = p_background.replace("#", senderHue, "g");
+}
+
+function checkNewText(target)
+{
+ if (target.tagName == "P" && target.className != "event-messages")
+ setColors(target);
+
+ var nicks = target.getElementsByClassName("ib-nick");
+ for (var i = 0; i < nicks.length; ++i) {
+ var nick = nicks[i];
+ if (!nick.hasAttribute("left"))
+ nick.style.background = nick_background.replace("#", nick.getAttribute("nickColor"), "g");
+ }
+}
+
+MutationObserver(function(aMutations) {
+ for (let mutation of aMutations)
+ for (let node of mutation.addedNodes)
+ if (node instanceof HTMLElement)
+ checkNewText(node);
+}).observe(document.getElementById("ibcontent"),
+ {childList: true, subtree: true});
+</script>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Incoming/Content.html
@@ -0,0 +1,2 @@
+<p class="%messageClasses%" title="%time%" senderColor="%senderColor%"><span class="pseudo">%sender%</span> <span class="message-style">%message%</span></p>
+<div id="insert"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Incoming/Context.html
@@ -0,0 +1,2 @@
+<p class="context %messageClasses%" title="%time%" senderColor="%senderColor%"><span class="pseudo">%sender%</span> <span class="message-style">%message%</span></p>
+<div id="insert"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Incoming/NextContent.html
@@ -0,0 +1,2 @@
+<p class="%messageClasses%" title="%time%" senderColor="%senderColor%"><span class="message-style">%message%</span></p>
+<div id="insert"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Incoming/NextContext.html
@@ -0,0 +1,2 @@
+<p class="context %messageClasses%" title="%time%" senderColor="%senderColor%"><span class="message-style">%message%</span></p>
+<div id="insert"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Info.plist
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActionMessageTemplate</key>
+ <string>%sender% %message%</string>
+
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+
+ <key>CFBundleGetInfoString</key>
+ <string>Instantbird Dark Message Style</string>
+
+ <key>CFBundleIdentifier</key>
+ <string>org.instantbird.dark.message.style</string>
+
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>1.0</string>
+
+ <key>CFBundleName</key>
+ <string>Dark</string>
+
+ <key>CFBundlePackageType</key>
+ <string>AdIM</string>
+
+ <key>DefaultBackgroundColor</key>
+ <string>000000</string>
+
+ <key>DefaultVariant</key>
+ <string>Blue</string>
+
+ <key>DisableCustomBackground</key>
+ <false/>
+
+ <key>MessageViewVersion</key>
+ <integer>4</integer>
+
+ <key>ShowsUserIcons</key>
+ <true/>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Status.html
@@ -0,0 +1,1 @@
+<p class="event-messages">%time% - %message%</p>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Variants/Blue.css
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+p.incoming {
+ border-top: 1px solid hsla(215, 100%, 80%, 0.4);
+ background: -moz-linear-gradient(top, hsla(215, 100%, 80%, 0.3), hsla(215, 100%, 80%, 0.1) 30px);
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Variants/Green.css
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+p.incoming {
+ border-top: 1px solid hsla(150, 80%, 80%, 0.4);
+ background: -moz-linear-gradient(top, hsla(150, 80%, 80%, 0.3), hsla(150, 80%, 80%, 0.1) 30px);
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Variants/Purple.css
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+p.incoming {
+ border-top: 1px solid hsla(275, 100%, 80%, 0.4);
+ background: -moz-linear-gradient(top, hsla(275, 100%, 80%, 0.3), hsla(275, 100%, 80%, 0.1) 30px);
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Variants/Red.css
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+p.incoming {
+ border-top: 1px solid hsla(0, 100%, 80%, 0.4);
+ background: -moz-linear-gradient(top, hsla(0, 100%, 80%, 0.3), hsla(0, 100%, 80%, 0.1) 30px);
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/Variants/Yellow.css
@@ -0,0 +1,8 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+p.incoming {
+ border-top: 1px solid hsla(50, 100%, 80%, 0.4);
+ background: -moz-linear-gradient(top, hsla(50, 100%, 80%, 0.3), hsla(50, 100%, 80%, 0.1) 30px);
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/dark/main.css
@@ -0,0 +1,109 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+body {
+ margin: 0;
+ padding: 0;
+ background-color: black;
+}
+
+p {
+ font-family: sans-serif;
+ margin: 0;
+ padding: 0;
+ color: rgba(255, 255, 255, 0.6);
+}
+
+p.message {
+ margin: 0;
+ padding: 4px 15px 6px 15px;
+ border-bottom: 1px solid black;
+ border-top: 1px solid rgba(255, 255, 255, 0.3);
+ background: -moz-linear-gradient(top, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.07) 30px);
+}
+
+p.context:not(:hover) {
+ opacity: 0.5;
+ color: rgba(255, 255, 255, 1);
+}
+
+span.message-style,
+p.event-messages {
+ font-size: 90%;
+}
+
+p.event-messages {
+ margin: 5px 0px 5px 0px;
+ text-align: center;
+ opacity: 0.4;
+ -moz-transition-property: opacity;
+ -moz-transition-duration: 0.3s;
+}
+
+p.event-messages:hover {
+ opacity: 1;
+}
+
+.message-style {
+ display: block;
+}
+
+.pseudo {
+ margin-bottom: 3px;
+ font-weight: bold;
+ color: white;
+ display: block;
+}
+
+.nick>.message-style {
+ font-weight: bold;
+}
+
+.action>.message-style {
+ font-style: italic;
+}
+
+.action>.message-style:before {
+ content: "*** ";
+}
+
+a,
+a:hover {
+ color: rgba(255, 255, 255, 0.6);
+}
+
+a:active {
+ color: rgba(255, 255, 255, 1);
+}
+
+a:visited {
+ color: rgba(255, 255, 255, 0.4);
+}
+
+#Chat {
+ white-space: normal;
+}
+
+p *:-moz-any-link img {
+ margin-bottom: 1px;
+ border-bottom: solid 1px;
+}
+
+.ib-nick {
+ color: white !important;
+ border-radius: 3px;
+ padding: 0 0.25em;
+}
+
+.ib-nick[left] {
+ color: white !important;
+ background-color: black;
+ opacity: 0.4;
+ -moz-transition-property: opacity;
+ -moz-transition-duration: 0.3s;
+}
+
+.ib-nick[left]:hover {
+ opacity: 1;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ff62c80758c8da4bc6f2415faa6de7e1937ac199
GIT binary patch
literal 740
zc$@*`0vr8_P)<h;3K|Lk000e1NJLTq000jF000mO1^@s6$yOx<00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iXM!
z4FD_|usCS|00Lx5L_t(2&!y8nYg17e!14b%_uk$%Nt@_JMNo@&=^z#nq@Ai#L7Wsj
zwBqD9=-8#;CvfN>;?O|{p_`(Db`YUpgjfXMz_i6uwSr07+?(8_=jA%IiIKYbY!B!8
zotNjF1OE}CGnt%T>=QyvA;p+hddS*@1l}p77L2jCpUhsY{u575FJ2H*Jk0LT_4Q`6
zzSrfWwIK>4%BAx5R;3(mH{ywfdskkxjMIXS<2*VsIFJht9&jDkV|dW#=mC%QO+j}i
z<9L2gPZWmZ!Li|w-#$J24B$*oFZKy3UY!^m$n~VtC}q&vaAP#X@k1`pmqN5QARQdf
z_nOV*QUVXQHr`jI5MnC3KiAg@l{VaYT4DBashumOal3r{bS4$_kIVqlMT)WBY}Ri<
zDJ+-I^k9<&YZF#C>L{h#lepb!&r1cvKu&6<hg!{1+7LH2ODi#>C)1oimBE@nyHVPJ
zbiwflfWWmjL2H9ZXcw$}SMBTQgi0H<F<6@bWMu;HqA>b1*jiyX{({=jsK=;gZ5e1t
zrPM;XRNn4{O6xsXYlBjTMlDov_@e-9N@MKptx7oxx2ii05ti%cf;PT+=`dXmJFs4(
z8CUCT`MdK#$@%i;ezSjQd?^aUamVvL=}7iv9Nrc~3SUAh)onhkhSZ{nT4kg0tN3E3
zy!tW^{A@qZv)5*?rgF#T{B$PecBeh0i#9uFY}7*4jH~ru#f4kzg}FTN8nAzTjQ-OT
zM}q#587~zK<M;#CCa7j@ISzjm*7A4f<IS%{pa|GKziKxmkOKlB3p9XDpajI7g}(v$
WczHy|zu`&%0000<MNUMnLSTX_O;#xY
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f84a080807314698ae1d114118e877cb98f6758c
GIT binary patch
literal 196
zc%17D@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^PXN
zr}OT5klF%|$YKTtZeb8+WSBKa0w~B{;_2(kev_3?&|LXn96Kve$i>seF+}3>)ILu>
z1_d6bi$B8th1f;==k|Dq^raXDoH<kI$;>e6DT~LaU7F$>9x3KtIk#=c!~l^=4xj4t
f8q>Vb_12fYl&u%rw8$}D9%R3#tDnm{r-UW|_O>^d
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9f5e414f4443035ac4ded9f36575412eb6ca316f
GIT binary patch
literal 196
zc%17D@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|*pj^6T^PXN
zr}OT5klF%|$YKTtZeb8+WSBKa0w~B{;_2(kev_3?&|LUNyZK6>kc+2_V~E7%-u^%?
z1_ci1^op?ePxP|m-DU*-o^*W1>>bq)6j>RJC(mw7>ER1A`=Iz%=+il=(^DE!uJpyf
f=L_B*lHXnCt79*@(KvgJEy#XPS3j3^P6<r_TWmN+
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/Footer.html
@@ -0,0 +1,79 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<script type="text/javascript;version=1.8">
+
+const bg_gradient = "background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, hsla(#, 100%, 98%, 1) 15px, hsla(#, 100%, 98%, 1));";
+const bg_context_gradient = "background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05) 15px, hsla(#, 20%, 98%, 1) 15px, hsla(#, 20%, 98%, 1));";
+const bg_color = "background-color: hsl(#, 100%, 98%);";
+
+var body = document.getElementById("ibcontent");
+
+
+function setColors(target)
+{
+ var senderColor = target.getAttribute("senderColor");
+
+ if (senderColor) {
+ var regexp = /color:\s*hsl\(\s*(\d{1,3})\s*,\s*\d{1,3}\%\s*,\s*\d{1,3}\%\s*\)/;
+ var parsed = regexp.exec(senderColor);
+
+ if (parsed) {
+ var senderHue = parsed[1];
+ if (target.classList.contains("context"))
+ target.setAttribute("style", bg_context_gradient.replace("#", senderHue, "g"));
+ else
+ target.setAttribute("style", bg_gradient.replace("#", senderHue, "g"));
+ }
+ }
+
+ if (body.scrollHeight <= screen.height) {
+ if (senderHue) {
+ body.setAttribute("style", bg_color.replace("#", senderHue));
+ }
+ else if (target.classList.contains("outgoing")) {
+ body.className = "outgoing-color";
+ body.removeAttribute("style");
+ }
+ else if (target.classList.contains("incoming")) {
+ body.className = "incoming-color";
+ body.removeAttribute("style");
+ }
+ else if (target.classList.contains("event")) {
+ body.className = "event-color";
+ body.removeAttribute("style");
+ }
+ }
+}
+
+
+function checkNewText(target)
+{
+ if (target.tagName == "DIV")
+ setColors(target);
+ else if (target.tagName == "P" && target.className == "event") {
+ let parent = target.parentNode;
+ // We need to start a group with this element if there are at least 3
+ // system messages and they aren't already grouped.
+ if (!parent.grouped && parent.querySelector("p.event:nth-of-type(3)")) {
+ var div = document.createElement("div");
+ div.className = "eventToggle";
+ div.addEventListener("click", function (event)
+ event.target.parentNode.classList.toggle("hide-children"));
+ parent.insertBefore(div, parent.querySelector("p.event:first-of-type"));
+ parent.classList.add("hide-children");
+ parent.grouped = true;
+ }
+ }
+}
+
+
+MutationObserver(function(aMutations) {
+ for (let mutation of aMutations)
+ for (let node of mutation.addedNodes)
+ if (node instanceof HTMLElement)
+ checkNewText(node);
+}).observe(document.getElementById("ibcontent"),
+ {childList: true, subtree: true});
+</script>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/Incoming/Content.html
@@ -0,0 +1,4 @@
+<div class="messages-group %messageClasses%" senderColor="%senderColor%">
+<p class="%messageClasses%"><span class="date">%time%</span> <span class="pseudo" style="%senderColor%">%sender%</span> <span class="message-style">%message%</span></p>
+<div id="insert"/>
+</div>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/Incoming/Context.html
@@ -0,0 +1,4 @@
+<div class="messages-group context %messageClasses%" senderColor="%senderColor%">
+<p class="%messageClasses%"><span class="date">%time%</span> <span class="pseudo" style="%senderColor%">%sender%</span> <span class="message-style">%message%</span></p>
+<div id="insert"/>
+</div>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/Incoming/NextContent.html
@@ -0,0 +1,3 @@
+<hr/>
+<p class="%messageClasses%"><span class="date date-next">%time%</span> <span class="message-style">%message%</span></p>
+<div id="insert"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/Info.plist
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActionMessageTemplate</key>
+ <string>%sender% %message%</string>
+
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+
+ <key>CFBundleGetInfoString</key>
+ <string>Instantbird PaperSheets Message Style</string>
+
+ <key>CFBundleIdentifier</key>
+ <string>org.instantbird.papersheets.message.style</string>
+
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>1.0</string>
+
+ <key>CFBundleName</key>
+ <string>PaperSheets</string>
+
+ <key>CFBundlePackageType</key>
+ <string>AdIM</string>
+
+ <key>DefaultBackgroundColor</key>
+ <string>FFFFFF</string>
+
+ <key>DisableCustomBackground</key>
+ <false/>
+
+ <key>MessageViewVersion</key>
+ <integer>4</integer>
+
+ <key>ShowsUserIcons</key>
+ <true/>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/NextStatus.html
@@ -0,0 +1,2 @@
+<p class="%messageClasses%"><span class="date">%time%</span> <span class="message-style">%message%</span></p>
+<div id="insert"/>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/Status.html
@@ -0,0 +1,4 @@
+<div class="messages-group %messageClasses%">
+<p class="%messageClasses%"><span class="date">%time%</span> <span class="message-style">%message%</span></p>
+<div id="insert"/>
+</div>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/Variants/White.css
@@ -0,0 +1,22 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+div.outgoing {
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 255, 255, 1) 15px, rgba(255, 255, 255, 1)) !important;
+}
+
+div.incoming {
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 255, 255, 1) 15px, rgba(255, 255, 255, 1)) !important;
+}
+
+
+
+/* used by javascript */
+.outgoing-color {
+ background-color: rgb(255, 255, 255);
+}
+
+.incoming-color {
+ background-color: rgb(255, 255, 255);
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/papersheets/main.css
@@ -0,0 +1,191 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+body {
+ margin: 0;
+ padding: 0;
+}
+
+p {
+ font-family: sans-serif;
+ margin: 0;
+ padding: 0;
+}
+
+div.messages-group {
+ margin: -15px 0 0 0;
+ padding: 18px 5px 20px 5px;
+}
+
+div.outgoing {
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(245, 245, 255, 1) 15px, rgba(245, 245, 255, 1));
+}
+
+div.incoming {
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 245, 245, 1) 15px, rgba(255, 245, 245, 1));
+}
+
+div.event {
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.1) 15px, rgba(255, 255, 240, 1) 15px, rgba(255, 255, 240, 1));
+}
+
+div.context+div.event {
+ background: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.05) 15px, rgba(255, 255, 240, 1) 15px, rgba(255, 255, 240, 1));
+}
+
+div.context:not(:hover)>p {
+ opacity: 0.55;
+}
+
+div.messages-group:last-child {
+ padding-bottom: 10px;
+}
+
+div.messages-group>hr {
+ margin: 3px 50px 0px 20px;
+ background-color: rgba(0, 0, 0, 0.05);
+ height: 1px;
+ border: 0;
+}
+
+span.message-style {
+ margin: 2px 50px 0px 20px;
+ display: block;
+ float: none;
+}
+
+span.date {
+ color: rgba(0, 0, 0, 0.4);
+ font-size: smaller;
+ text-align: right;
+ float: right;
+ display: block;
+}
+
+span.date-next {
+ opacity: 0.4;
+ margin-top: -6px;
+ -moz-transition-property: opacity;
+ -moz-transition-duration: 0.3s;
+}
+
+p:hover > span.date-next {
+ opacity: 1;
+}
+
+span.pseudo {
+ font-weight: bold;
+ float: none;
+ display: block;
+}
+
+p.outgoing>span.pseudo {
+ color: rgb(80,80,200);
+}
+
+p.incoming>span.pseudo {
+ color: rgb(200,80,80);
+}
+
+p.nick>span.message-style {
+ font-weight: bold;
+}
+
+p.action>span.message-style {
+ font-style: italic;
+}
+
+p.action>span.message-style:before {
+ content: "*** ";
+}
+
+p.event {
+ margin-left: 0px;
+ min-height: 16px;
+ background: url('Bitmaps/information.png') no-repeat top left;
+}
+
+p.event>span.message-style {
+ color: rgba(0, 0, 0, 0.4);
+}
+
+#Chat {
+ white-space: normal;
+}
+
+p *:-moz-any-link img {
+ margin-bottom: 1px;
+ border-bottom: solid 1px;
+}
+
+
+
+/* used by javascript */
+.outgoing-color {
+ background-color: rgb(245, 245, 255);
+}
+
+.incoming-color {
+ background-color: rgb(255, 245, 245);
+}
+
+.event-color {
+ background-color: rgb(255, 255, 240);
+}
+
+.eventToggle {
+ margin-top: -2px;
+ margin-left: -4px;
+ height: 9px;
+ width: 9px;
+ cursor: pointer;
+ background: url('Bitmaps/minus.png') no-repeat left top;
+}
+
+.hide-children > .eventToggle {
+ background-image: url('Bitmaps/plus.png');
+}
+
+.hide-children > p.event:first-of-type > .message-style:after {
+ content: "[\2026]"; /* … */
+ margin-left: 1em;
+ color: #5a7ac6;
+ font-size: smaller;
+}
+
+.hide-children > p.event:not(:first-of-type):not(:last-of-type) {
+ display: none;
+}
+
+/* Adapt styles to narrow windows */
+@media all and (max-width: 400px) {
+ div.messages-group > hr {
+ margin-right: 0;
+ }
+
+ span.message-style {
+ margin-right: 0;
+ }
+
+ span.date-next {
+ display: none;
+ }
+}
+
+@media all and (max-width: 200px) {
+ span.date {
+ display: none;
+ }
+}
+
+/* Adapt styles when the window is very low */
+@media all and (max-height: 200px) {
+ div.messages-group {
+ padding-bottom: 8px;
+ }
+
+ div.messages-group:last-child {
+ padding-bottom: 8px;
+ }
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/simple/Incoming/Content.html
@@ -0,0 +1,1 @@
+<p class="%messageClasses%"><span class="date">%time%</span><span class="pseudo" style="%senderColor%">%sender%</span>%message%</p>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/simple/Incoming/Context.html
@@ -0,0 +1,1 @@
+<p class="context %messageClasses%"><span class="date">%time%</span><span class="pseudo" style="%senderColor%">%sender%</span>%message%</p>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/simple/Incoming/NextContext.html
@@ -0,0 +1,1 @@
+<p class="context %messageClasses%"><span class="date">%time%</span><span class="pseudo" style="%senderColor%">%sender%</span>%message%</p>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/simple/Info.plist
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActionMessageTemplate</key>
+ <string>%message%</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleGetInfoString</key>
+ <string>Instantbird Minimal Message Style</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.instantbird.minimal.message.style</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>1.0</string>
+ <key>CFBundleName</key>
+ <string>Minimal</string>
+ <key>CFBundlePackageType</key>
+ <string>AdIM</string>
+ <key>DefaultBackgroundColor</key>
+ <string>FFFFFF</string>
+ <key>DefaultVariant</key>
+ <string>Normal</string>
+ <key>DisableCustomBackground</key>
+ <false/>
+ <key>MessageViewVersion</key>
+ <integer>4</integer>
+ <key>ShowsUserIcons</key>
+ <true/>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/simple/Status.html
@@ -0,0 +1,1 @@
+<p aria-live="polite" class="%messageClasses%"><span class="date">%time%</span>%message%</p>
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/simple/Variants/Dark.css
@@ -0,0 +1,23 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+body {
+ background: #222;
+ color: #eee;
+}
+.outgoing .pseudo {
+ color: #7878dc;
+}
+.incoming .pseudo {
+ color: #dc7878;
+}
+.event {
+ color: #828282;
+}
+a {
+ color: #5497ea;
+}
+.context {
+ color: #b2b2b4;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/messages/simple/main.css
@@ -0,0 +1,74 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#Chat {
+ white-space: normal;
+}
+
+.pseudo {
+ font-weight: bold;
+}
+
+.outgoing .pseudo {
+ color: rgb(80,80,200);
+}
+
+.incoming .pseudo {
+ color: rgb(200,80,80);
+}
+
+.date {
+ font-style: normal;
+ font-weight: normal;
+}
+
+span.date:after {
+ content: " - ";
+}
+
+.action>span.date:after {
+ content: " * ";
+}
+
+span.pseudo:after {
+ content: ": ";
+}
+
+.action>span.pseudo:after {
+ content: " ";
+}
+
+.event>span.pseudo:after {
+ content: none;
+}
+
+.event {
+ color: rgb(170,170,170);
+}
+
+.nick {
+ font-weight: bold;
+}
+
+.action {
+ font-style: italic;
+}
+
+.context {
+ color: rgb(91,91,91);
+}
+
+p.context>.pseudo,
+p.context .ib-nick {
+ opacity: 0.7;
+}
+
+p {
+ margin: 0px auto;
+}
+
+p *:-moz-any-link img {
+ margin-bottom: 1px;
+ border-bottom: solid 1px;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e067fc69cb3d9aadd8f7c3d708d11b3e3d6e8b1f
GIT binary patch
literal 3548
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
WoB0HEz;_4$0000<MNUMnLSTZ!Vy9mK
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d077642c2be32586cfa404e68b3e5110ad60bfbe
GIT binary patch
literal 345
zc%17D@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>?NMQuIzW&M1)N^-`zas3>4xl
z@Q5sCU|^XG!i+U0*$aV!Ea{HEjtmSN`?>!lvI6-pJY5_^DsCkwNMszyNXuRS@%Q)n
z8~*?QuX!UXTDR`ko1fdOzrSDJtTI(ZG`%T9LOycd#ECB%wY5)cxg~SY?(8hw_<NJ_
z<$H`*_b@%uSJ)fC{mwB{LSE0l^q0=UpWR~Ch7vQP&i(%Xf4_>r=Sdx^j#ZM4Jkbj}
z#ZT}sF{?QnuXZV77FaU9^HGFEg?>RnK@Bfo|236RV-J20{p4`}{r^vyX3uqKO7D|j
z*Eq{Y&}Ff@N{XGa@#p6sCOoL+IbiUBIce|B;^)VkABlTOJ8v`*Nq+pg@ynsPA|hg`
ne7+%<p0KK`&T?#sIm_^5+fHvz%P-78KQnl``njxgN@xNA#cG64
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1343d47544d4ff9747ee9c29e860ddb76a07cafe
GIT binary patch
literal 1944
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
new file mode 100644
--- /dev/null
+++ b/im/themes/newtab.css
@@ -0,0 +1,147 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+%ifdef XP_UNIX
+%ifndef XP_MACOSX
+%define XP_LINUX
+%endif
+%endif
+
+.newtab-toolbar {
+ margin: 0;
+ padding: 2px;
+ border-style: none;
+ -moz-appearance: none;
+%ifdef XP_MACOSX
+ background-color: -moz-mac-chrome-active;
+ background-image: -moz-linear-gradient(rgba(255,255,255,.43), rgba(255,255,255,0));
+ border-bottom: 1px solid rgba(0, 0, 0, 0.57);
+}
+
+.newtab-toolbar:-moz-window-inactive {
+ background-color: -moz-mac-chrome-inactive;
+ border-bottom-color: rgba(0, 0, 0, 0.32);
+%else
+ background-color: -moz-Dialog;
+%ifdef XP_WIN
+ background-image: -moz-linear-gradient(rgba(255,255,255,.5), rgba(255,255,255,0));
+%else
+ background-image: -moz-linear-gradient(rgba(255,255,255,.3), rgba(255,255,255,0));
+%endif
+ border-bottom: 1px solid ThreeDShadow;
+%endif
+}
+
+.filterbox {
+ font-size: medium;
+ padding: 2px;
+}
+
+.newtab-listbox {
+ margin: 0;
+ -moz-appearance: none;
+%ifndef XP_MACOSX
+ border-bottom: 2px solid;
+ -moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
+%endif
+}
+
+.newtab-item {
+ padding-top: 4px;
+ padding-bottom: 4px;
+}
+
+.displayName {
+ font-size: large;
+}
+
+.infoIcon {
+ height: 16px;
+ width: 16px;
+ max-height: 16px;
+ max-width: 16px;
+}
+
+.infoIcon[source="contact"] {
+ list-style-image: url("chrome://instantbird/skin/tag.png");
+}
+
+.infoIcon[source="chat"] {
+ list-style-image: url("chrome://chat/skin/chat-16.png");
+}
+
+.infoIcon[source="existing"] {
+ list-style-image: url("chrome://instantbird/skin/actionicon-tab.png");
+ padding: 3px 0 2px;
+%ifndef XP_LINUX
+ -moz-image-region: rect(0, 16px, 11px, 0);
+}
+
+.infoIcon[source="existing"][selected="true"] {
+ -moz-image-region: rect(11px, 16px, 22px, 0);
+%endif
+}
+
+@media (min-resolution: 2dppx) {
+ .infoIcon[source="contact"] {
+ list-style-image: url("chrome://instantbird/skin/tag@2x.png");
+ }
+
+ .infoIcon[source="existing"] {
+ list-style-image: url("chrome://instantbird/skin/actionicon-tab@2x.png");
+ -moz-image-region: rect(0, 32px, 22px, 0);
+ }
+
+ .infoIcon[source="existing"][selected="true"] {
+ -moz-image-region: rect(22px, 32px, 44px, 0);
+ }
+}
+
+.infoText {
+ margin-right: 0px !important;
+}
+
+.buddyIcon {
+ border: 2px solid rgba(0,0,0,0.15);
+ border-radius: 5px;
+ overflow: hidden;
+ max-width: 48px;
+ max-height: 48px;
+ width: 48px;
+ height: 48px;
+}
+
+.buddyIcon[src=""] {
+ background-image: url("chrome://instantbird/skin/userIcon.png");
+ background-size: contain;
+ background-repeat: no-repeat;
+}
+
+.buddyIcon[src=""][chat] {
+ background-image: url("chrome://instantbird/skin/multiUserIcon.png");
+}
+
+.statusTypeIcon {
+ margin-top: 32px;
+ margin-left: 32px;
+ width: 16px;
+ height: 16px;
+}
+
+.statusTypeIcon[chat] {
+ list-style-image: none !important;
+}
+
+.protoIcon {
+ width: 16px;
+ height: 16px;
+ max-width: 16px;
+ max-height: 16px;
+ margin-right: 0px;
+}
+
+.newtabContent[status="offline"],
+.newtabContent[status="unknown"] {
+ opacity: 0.5;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1853d3a0192bd8a6f0125dfd084f67c2862b5452
GIT binary patch
literal 727
zc$@*(0x127P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007>Nkl<Zc-p0s
zT}V_x6vzMSTwR51CCSy*GBV4MO2s1jAhn2S4aFivx2&Wx${>(}(4-zJgMCO#2~$X|
zhoY1f)JiS%p%1hk`XEdbHCIL3U3J%8@7%qe+b)qsR5WmAhB<S7=YQsm7yfg2{myZ}
z0Fmnx(Cw0dXI+TTFrfb*0D^aGu~?Rzlb#33hPIlA<tfF&aX@ta6`(W^OS4k&Hb{5N
z4}1`V4QCw<orpbAj@~~4%Jc|cxdeu!ed&6HXVOU@(0db2wLL}GD^SvChVvJ|<02fA
zWe5v`p$`qgVogM_7IBx!I}7k3!0`d*=l5V5Lifxx9A+zOm=9)?icv)XA11a)B3qje
zsA2$bH6cYZ3oTy=@EMRs0H=xebmp)Db}L5S+Yy@SBM^Y89-ZTrTeH_?VNo_9)3duA
z6f{XTK{iI9aW_mNMUn(=>O)%#>b75CxeCBnznQN(sl%OwwAd(Uw@@ZdkSV%srM;Pg
zX_csSNrW`okM?HNZ#&QONah3q6cw^Mdjnr_YBz4j?TU_sI+`xq2{KK=w(pr?8NjP{
z-d}3O-s-399nq&fU0?!D^D1(A#*t&bH=tcjJ_>R<-GPdcD$z86s#+XATFLIx3zIBS
z{-KS`&v=HH==KNZBQS!3s0^8V0C1OO9YbUN?A6putiYXN&Ocy6$3@<}agQb$zSIeB
zr^g>471XDoh05;)W~R{DG}*eTknNxg;v7I|7y=qk<4L?OED@Gb^mI$+kDp*vd{L1|
zT^8dN1poQy>ae^>y@DjuFzj;xg=x^_?1V{B!SVVHsvf*VU3D89QhW!Jd3bsvveqoe
zLD31-wFYPn%^3c<1V5TWJZFkLCBuxz=}#8mt^+dJ__rEqd<9mM6+ACs>I(n>002ov
JPDHLkV1lx*M!En1
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dccc3e3b78535db4d63503db1427e18070b0ccda
GIT binary patch
literal 12252
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..45256d4e76b2aabb4c32889dc03bca3f9e5f80f4
GIT binary patch
literal 575
zc$@)00>J%=P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10lY~>K~y-6jZ;Bu6HyTUW;0n+wH}KgNH0%8^ybZrh!-ssjN~2)
zJ+#!G)S!5cB&+xbM6lpN3RyuKQS{!EE!0xm=F*%*@UoDmn`HXNgW1(hHj)qK^1e4S
z-#7CfRlM@F>$+7D$y;j~W5977VP?PE?UvYe-RjKk*@7{K2sBPU6v~Z8qfr0w9xNhx
zV+@5yM^M$V3J?*DF(e{+w$?I%V69DDTKU?>>P7$nxOHg~OV>{SRiKJ~4m;7IRhx*n
z>pxH{PN7zuLVfcm#2zR32=UN#K!HDh9$826X8jlLT%G`_rdo^(*a4C=z~}7%K`X?<
z&2vM1gpn3Ha*SuSZOmOiJH(}07#w1TfOn;<$dJO?(c6g?sM?{Jeewm}o}_ZI0wNMs
zWzevSwWl{?dx@@&^JkSr!p!XN?e7*Yn2Xd74{_LTVe-@&Oyo|2DE(!sD)#nwm6?62
zc;)GAHtXe1<nAsm+;adR?1Xr|@=AgrNc|iA&VH}gD?$7Ft$1ZsRc$s8<oSzgv*MMn
zMBM)((c$B#dS~bR&YFl6OAj8mMvnd;#07{b-1@e){P6yxm*XTx_zeR~Eq)WNar6KH
N002ovPDHLkV1hx51f>7~
new file mode 100644
--- /dev/null
+++ b/im/themes/preferences-gnomestripe/applications.css
@@ -0,0 +1,61 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Line up the actions menu with action labels above and below it.
+ * Equalize the distance from the left side of the action box to the left side
+ * of the icon for both the menu and the non-menu versions of the action box.
+ * Also make sure the labels are the same distance away from the icons.
+ */
+.actionsMenu {
+ margin-top: -1px;
+ margin-bottom: -1px;
+ -moz-margin-start: -1px;
+ -moz-margin-end: 0;
+}
+
+.typeIcon,
+.actionIcon {
+ -moz-margin-start: 3px;
+ -moz-margin-end: 3px;
+}
+
+richlistitem label {
+ -moz-margin-start: 1px;
+ margin-top: 2px;
+}
+
+richlistitem {
+ min-height: 25px;
+}
+
+richlistitem[appHandlerIcon="ask"],
+menuitem[appHandlerIcon="ask"] {
+ list-style-image: url("chrome://instantbird/skin/preferences/alwaysAsk.png");
+}
+
+richlistitem[appHandlerIcon="save"],
+menuitem[appHandlerIcon="save"] {
+ list-style-image: url("moz-icon://stock/gtk-save?size=menu");
+}
+
+richlistitem[appHandlerIcon="plugin"],
+menuitem[appHandlerIcon="plugin"] {
+ list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric-16.png");
+}
+
+.actionsMenu .menulist-icon {
+ -moz-margin-end: 1px;
+ height: 16px;
+ width: 16px;
+}
+
+.actionsMenu > menupopup > menuitem > .menu-iconic-left {
+ -moz-padding-start: 0;
+ -moz-padding-end: 4px !important;
+}
+
+.actionsMenu > menupopup > menuitem {
+ -moz-padding-start: 3px;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..66d2bc9e0ff60aa0601a3b837fd933d23ea79a2f
GIT binary patch
literal 548
zc$@(w0^9wGP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10ij7mK~y-6#gn~m6G0S(znxvlu~*m|Ia@?*8~1^fAS&tz9>EWm
zXFx)T1R@eqK%fXMICOF27@Pcf?X~CL8H$aaxQe0_9O+0iBi(an?l}{9?|BH!gQ|h(
z<EQs8jWIi_n%$=`48yK-uFd|z-f5oa{=OKEuKfPN?rEedS*228JQ-76SpfpP_qXU4
zYv;=SbT*~_sDY|x=K4AmlL=>MJyZqf6z3eyxg|0142J`zML`&bsOrrSYqc8I3cor(
z5fN19)CEs|cTiR0I0nF4dm|tsBuPTG8uRt&3)Wgx1rb5S^6mQ(aU7E*397mfh~_yE
zu>cqoAR_F2*yYLQCIH7jj;S{q7-MkGEu65{5?Lz%c<;Hmyr9?XvGsI|KZ5~>pAP|e
z{_F*7%_g0b4nYvms5h<!gh*`JIUncDrZZX_EdbV<O<rxkUh=-R(W2k)laF&&SDWPw
z%C{<^2}#rR&H$xpN@z+4<}>JyMpxPT`s2IfcME^dhXCEED2n#mcW-uP)@BRO-ExTB
m(pkwU3cE9F+rfYTjsF1Eqg9)+qZA|n0000<MNUMnLSTYOz3g@X
new file mode 100644
--- /dev/null
+++ b/im/themes/preferences-gnomestripe/preferences.css
@@ -0,0 +1,177 @@
+/*
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+
+/* Global Styles */
+#BrowserPreferences radio[pane] {
+ list-style-image: url("chrome://instantbird/skin/preferences/Options.png");
+}
+
+radio[pane=paneMain] {
+ -moz-image-region: rect(0px, 32px, 32px, 0px)
+}
+
+radio[pane=paneTabs] {
+ -moz-image-region: rect(0px, 64px, 32px, 32px)
+}
+
+radio[pane=paneContent] {
+ -moz-image-region: rect(0px, 96px, 32px, 64px)
+}
+
+radio[pane=paneApplications] {
+ -moz-image-region: rect(0px, 128px, 32px, 96px)
+}
+
+radio[pane=panePrivacy] {
+ -moz-image-region: rect(0px, 160px, 32px, 128px)
+}
+
+radio[pane=paneThemes] {
+ -moz-image-region: rect(0px, 192px, 32px, 160px)
+}
+
+radio[pane=paneAdvanced] {
+ -moz-image-region: rect(0px, 224px, 32px, 192px)
+}
+
+/* Themes Pane */
+#BrowserPreferences[animated="true"] #smileysPreview {
+ height: 25em;
+}
+
+#BrowserPreferences[animated="false"] #smileysPreview {
+ -moz-box-flex: 1;
+}
+
+/* Applications Pane */
+#BrowserPreferences[animated="true"] #handlersView {
+ height: 25em;
+}
+
+#BrowserPreferences[animated="false"] #handlersView {
+ -moz-box-flex: 1;
+}
+
+/* Privacy Pane */
+
+#timeBeforeAway {
+ width: 5em;
+}
+
+/* styles for the link elements copied from .text-link in global.css */
+.inline-link {
+ color: -moz-nativehyperlinktext;
+ text-decoration: underline;
+}
+
+.inline-link:not(:focus) {
+ outline: 1px dotted transparent;
+}
+
+/* Modeless Window Dialogs */
+.windowDialog,
+.windowDialog prefpane {
+ padding: 0px;
+}
+
+.contentPane {
+ margin: 9px 8px 5px 8px;
+}
+
+.actionButtons {
+ margin: 0px 3px 6px 3px !important;
+}
+
+/* Cookies Manager */
+#cookiesChildren::-moz-tree-image(domainCol) {
+ width: 16px;
+ height: 16px;
+ margin: 0px 2px;
+ list-style-image: url("moz-icon://stock/gtk-file?size=menu");
+}
+
+#paneApplications {
+ margin-left: 4px;
+ margin-right: 4px;
+ padding-left: 0;
+ padding-right: 0;
+}
+
+#linksOpenInBox {
+ margin-top: 5px;
+}
+
+#paneAdvanced {
+ padding-bottom: 10px;
+}
+#advancedPrefs {
+ margin-left: 0;
+ margin-right: 0;
+}
+
+#cookiesChildren::-moz-tree-image(domainCol, container) {
+ list-style-image: url("moz-icon://stock/gtk-directory?size=menu");
+}
+
+#cookieInfoBox {
+ border: 1px solid ThreeDShadow;
+ border-radius: 0px;
+ margin: 4px;
+ padding: 0px;
+}
+
+/* bottom-most box containing a groupbox in a prefpane. Prevents the bottom
+ of the groupbox from being cutoff */
+.bottomBox {
+ padding-bottom: 4px;
+}
+
+/**
+ * Clear Private Data
+ */
+#SanitizeDialogPane > groupbox {
+ margin-top: 0;
+}
+
+/* Display the message theme preview browser with borders like a listbox */
+#previewbrowser {
+ -moz-appearance: listbox;
+ margin: 2px 4px;
+}
+
+/**
+ * No message theme preview message box
+ */
+#noPreviewScreen {
+ background-color: -moz-Dialog;
+ overflow: auto;
+}
+#noPreviewBox {
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ border: 1px solid ThreeDShadow;
+ border-radius: 10px;
+ padding: 1.1em;
+ -moz-padding-start: 20px;
+ margin-left: 1em;
+ margin-right: 1em;
+}
+#noPreviewImage {
+ list-style-image: url("chrome://global/skin/icons/information-64.png");
+ -moz-margin-end: 1.2em;
+}
+#noPreviewInnerBox {
+ max-width: 25em;
+}
+#noPreviewTitle {
+ margin: 0 1em 0.6em 0;
+ font-size: 160%;
+ border-bottom: 1px solid ThreeDLightShadow
+}
+#noPreviewDesc {
+ font-size: 110%;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..57c24f9b0127b384c87d035923a98eaf683952b7
GIT binary patch
literal 19422
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c792d148871ee5790ecb55d5f0d9ab739980f087
GIT binary patch
literal 530
zc$@(e0`2{YP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006_W
z*OX`400009a7bBm000XU000XU0RWnu7ytkPv`IukR5;6}lS@kiVHAd4<Tj#p^e<Wj
z?fMgL+5|$&RuSQa5$_jBH(qKTwF+_(w2C0xSYiv6@-kjV%!pCE&7kr&=L5eKC4&w;
zbC`3^`_9an865y!JRUd3VzE!J*NbU<J|7m<XqGgj)zKjs3@VZ&VLTrHiCV1&(r^Qh
z$HN+mqHr#*b1)u1GU9gyULOnwY?d_Kz~ypbG#a7b?{hA1M7-u?B%Z&pfAlibqgm3-
z8T5KRbi3Ud&aNaJSl?%Aa|TYQ6T{&UolXbscAFu~GKA9<cK6aqBqcPPO%6SZ!{PWb
zu-olWRTYg!1NC~Hv$=B*Z}e@ZMvwt%xPi@PW6PoK64h#z<%g#NUeY2zpJbXP4L1-3
zfi0(8E<+SW&c^mFg6BzApYG8tX}E#g?N;daX^F*R5v5XzXS!;u)ndH~G)o$85RFDp
zv_+~`s}-qK3i*5<l}d#zGMmlPmj{c*0_s!N7O0Yj8)%`|SkqWHo6YQ1WilB=A`t`v
zfsarqbV$7^XjVUMz{6xRAsi0F@AprHs~Ri11+maT`(c&}e>E@|3|q^Da|Zw68#suu
UO@_C<*#H0l07*qoM6N<$g1?yCjQ{`u
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b4c1ca7d02bda83358e519639632ab55fafd6077
GIT binary patch
literal 795
zc$@(n1LXXPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!y-7qtRCwBqlV40y0Tjj$a76;FYoNj=
z!2%I=12OW?bZfPy*@L3iw6~UQy}0EA8Y|W+HFetRCAF<t*4nJ*YRy%Xq;wkALUJh@
z2r8L~h+fd)6%a~$=>g1d`?mA&?e}obcOVoBK{z+J+%9`sQEqN*ZYhYA*)|a(C>RXV
za|lEp`u^pE`ddwsNV%|pwtF3ovZS<Tr&tQY1!rRX+*rr;oAtCk0qPnWCCBN4^Cy<j
z1RR*ik<)Tu4r^tU4YztvfFz-)DWNcjrC*u_k7?285Q{f?F<c~dQmas1QRnUoxT?NZ
zmJ#zh8*`7r1a}MOGZ|Wg&;LPmwgSLtV~Q|StFq=YEi9m>Rz=Iph*t4<F{po_5)iv)
z+3s-EkD90Ny3*3H)Z{GS7<ID!{<Z3V0mz?o-PxH!o6@WdzJ#>#3)rz+Fl{EgsZ8n_
zDwPT^^ai}DyaHzGz9A{BF{QFr#fyuJTi*fXX7c3@yN#DFIs_=$3+q-Z^qJTok&5|j
zR(v&%<M37g9UL4P@CB*x#xR8vQJW$=j{!j<eHOvyrvPvd<QL_GZ{`))tn)xkECZRC
z1O7k|=(GdCWkiFnzZZ_l3xLC{0(5N!oOUBn=s`gGKTQTIE9Ie($3n3GFu*(G!3}nD
zlw<IV2?&J0E81?{oR2^n<x1G;Vkx5SdkfB0N?_G8>qS@`!Bk3$K;Ri~he?YEGkbFs
z%8Tlra5ukE*U&B$iWCc)XUNLLFhm_K93&p*u|;m@PguYLpto~I?sv5HM5?XTVrlKH
zKDUU@>7Z1EBFRDfDdNCKE%Lm(GoUe0Mocb773`v}N1c}CsMy{tF*`txCIRl<1fpjR
z$26aVtvZA2<m0Y~7Wj`a5?$Ht;tY}Ykpts?bO?%zOLBL6*Kn50OA9VtD0xy;B&Yor
ZU;u{MV3Zvrsb2s9002ovPDHLkV1nrhZFv9y
new file mode 100644
--- /dev/null
+++ b/im/themes/preferences-pinstripe/applications.css
@@ -0,0 +1,54 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Line up the actions menu with action labels above and below it.
+ * Equalize the distance from the left side of the action box to the left side
+ * of the icon for both the menu and the non-menu versions of the action box.
+ * Also make sure the labels are the same distance away from the icons.
+ */
+.actionsMenu {
+ -moz-margin-start: -2px;
+ margin-top: 0;
+ margin-bottom: -1px;
+}
+
+.typeIcon,
+.actionIcon {
+ -moz-margin-start: 3px;
+ -moz-margin-end: 3px;
+}
+
+richlistitem label {
+ -moz-margin-start: 1px;
+ margin-top: 2px;
+}
+
+richlistitem {
+ min-height: 22px;
+}
+
+richlistitem[appHandlerIcon="ask"],
+menuitem[appHandlerIcon="ask"] {
+ list-style-image: url("chrome://instantbird/skin/preferences/alwaysAsk.png");
+}
+
+richlistitem[appHandlerIcon="save"],
+menuitem[appHandlerIcon="save"] {
+ list-style-image: url("chrome://instantbird/skin/preferences/saveFile.png");
+}
+
+richlistitem[appHandlerIcon="plugin"],
+menuitem[appHandlerIcon="plugin"] {
+ list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric-16.png");
+}
+
+.actionsMenu .menulist-icon {
+ -moz-margin-end: 1px;
+}
+
+.actionsMenu > menupopup > menuitem > .menu-iconic-left {
+ -moz-padding-start: 3px;
+ -moz-padding-end: 1px;
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/preferences-pinstripe/preferences.css
@@ -0,0 +1,262 @@
+/*
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+
+.windowDialog {
+ padding: 12px;
+ font: -moz-dialog;
+}
+
+.paneSelector {
+ list-style-image: url("chrome://instantbird/skin/preferences/Options.png");
+}
+
+/* ----- GENERAL BUTTON ----- */
+
+radio[pane=paneGeneral],
+radio[pane=paneMain] {
+ -moz-image-region: rect(0px, 32px, 32px, 0px)
+}
+radio[pane=paneGeneral]:active,
+radio[pane=paneMain]:active:hover {
+ -moz-image-region: rect(32px, 32px, 64px, 0px)
+}
+
+/* ----- TABS BUTTON ----- */
+
+radio[pane=paneTabs] {
+ -moz-image-region: rect(0px, 64px, 32px, 32px);
+}
+
+radio[pane=paneTabs]:active:hover {
+ -moz-image-region: rect(32px, 64px, 64px, 32px);
+}
+
+/* ----- CONTENT BUTTON ----- */
+
+radio[pane=paneContent] {
+ -moz-image-region: rect(0px, 96px, 32px, 64px);
+}
+
+radio[pane=paneContent]:active:hover {
+ -moz-image-region: rect(32px, 96px, 64px, 64px);
+}
+
+/* ----- APPLICATIONS BUTTON ----- */
+
+radio[pane=paneApplications] {
+ -moz-image-region: rect(0px, 128px, 32px, 96px);
+}
+
+radio[pane=paneApplications]:active:hover {
+ -moz-image-region: rect(32px, 128px, 64px, 96px);
+}
+
+/* ----- PRIVACY BUTTON ----- */
+
+radio[pane=panePrivacy] {
+ -moz-image-region: rect(0px, 160px, 32px, 128px);
+}
+
+radio[pane=panePrivacy]:active:hover {
+ -moz-image-region: rect(32px, 160px, 64px, 128px);
+}
+
+/* ----- THEMES BUTTON ----- */
+
+radio[pane=paneThemes] {
+ -moz-image-region: rect(0px, 192px, 32px, 160px);
+}
+
+radio[pane=paneThemes]:active:hover {
+ -moz-image-region: rect(32px, 192px, 64px, 160px);
+}
+
+/* ----- ADVANCED BUTTON ----- */
+
+radio[pane=paneAdvanced] {
+ -moz-image-region: rect(0px, 224px, 32px, 192px);
+}
+
+radio[pane=paneAdvanced]:active:hover {
+ -moz-image-region: rect(32px, 224px, 64px, 192px);
+}
+
+/* ----- Smileys preview ----- */
+#BrowserPreferences[animated="true"] #smileysPreview {
+ height: 25em;
+}
+
+#BrowserPreferences[animated="false"] #smileysPreview {
+ -moz-box-flex: 1;
+}
+
+/* ----- APPLICATIONS PREFPANE ----- */
+#BrowserPreferences[animated="true"] #handlersView {
+ height: 25em;
+}
+
+#BrowserPreferences[animated="false"] #handlersView {
+ -moz-box-flex: 1;
+}
+
+description {
+ font: small-caption;
+ font-weight: normal;
+ line-height: 1.3em;
+ margin-bottom: 4px !important;
+}
+
+prefpane .groupbox-body {
+ -moz-appearance: none;
+ padding: 8px 4px 4px 4px;
+}
+
+#paneTabs > groupbox {
+ margin: 0;
+}
+
+#paneTabs > vbox {
+ margin: 12px 4px;
+}
+
+prefpane .groupbox-title {
+ background: url("chrome://global/skin/50pct_transparent_grey.png") repeat-x bottom left;
+ margin-bottom: 4px;
+}
+
+tabpanels {
+ padding: 20px 7px 7px;
+}
+
+caption {
+ -moz-padding-start: 5px;
+ padding-top: 4px;
+ padding-bottom: 2px;
+}
+
+#paneMain description,
+#paneContent description,
+#panePrivacy description,
+#paneAdvanced description,
+#paneThemes description {
+ font: -moz-dialog;
+}
+
+#paneContent {
+ padding-top: 8px;
+}
+
+#paneContent row {
+ padding: 2px 4px;
+ -moz-box-align: center;
+}
+
+#popupPolicyRow,
+#enableSoftwareInstallRow,
+#purpleConnectionBox,
+#enableImagesRow {
+ margin-bottom: 4px !important;
+ padding-bottom: 4px !important;
+ border-bottom: 1px solid #ccc;
+}
+
+#browserUseCurrent,
+#browserUseBookmark,
+#browserUseBlank {
+ margin-top: 10px;
+}
+
+#advancedPrefs {
+ margin: 0 8px;
+}
+
+#privacyPrefs {
+ padding: 0 4px;
+}
+
+#privacyPrefs > tabpanels {
+ padding: 18px 10px 10px 10px;
+}
+
+#OCSPDialogPane {
+ font: message-box !important;
+}
+
+/**
+ * Privacy Pane
+ */
+
+#timeBeforeAway {
+ width: 5em;
+}
+
+/* styles for the link elements copied from .text-link in global.css */
+.inline-link {
+ color: -moz-nativehyperlinktext;
+ text-decoration: underline;
+}
+
+.inline-link:not(:focus) {
+ outline: 1px dotted transparent;
+}
+
+/**
+ * Update Preferences
+ */
+#autoInstallOptions {
+ -moz-margin-start: 20px;
+}
+
+.updateControls {
+ -moz-margin-start: 10px;
+}
+
+/**
+ * Clear Private Data
+ */
+#SanitizeDialogPane > groupbox {
+ margin-top: 0;
+}
+
+/* Display the message theme preview browser with borders like a listbox */
+#previewbrowser {
+ -moz-appearance: listbox;
+ margin: 2px 4px;
+}
+
+/**
+ * No message theme preview message box
+ */
+#noPreviewScreen {
+ background-color: -moz-Dialog;
+ overflow: auto;
+}
+#noPreviewBox {
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ border: 1px solid ThreeDShadow;
+ border-radius: 10px;
+ padding: 1.1em;
+ -moz-padding-start: 20px;
+ margin-left: 1em;
+ margin-right: 1em;
+}
+#noPreviewImage {
+ list-style-image: url("chrome://global/skin/icons/information-64.png");
+ -moz-margin-end: 1.2em;
+}
+#noPreviewInnerBox {
+ max-width: 25em;
+}
+#noPreviewTitle {
+ margin: 0 1em 0.6em 0;
+ font-size: 160%;
+ border-bottom: 1px solid ThreeDLightShadow
+}
+#noPreviewDesc {
+ font-size: 110%;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7177f8df3001e84c14d6e86e5bf327bb510f3cd1
GIT binary patch
literal 570
zc$@(`0>%A_P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz+(|@1RCwB)lfQ4;P!Pwz2LAv|OGP50
zcwmZJRe~W4OWQx8OCn`R{*A1eqC|?6`~my}RrXFD+Nl#umv%^1Awg)VGGM?MFgAAX
zp8aSj3{6k^TKCR(pLg&4tN?gPdXE3I?<zeijYi|LSS*$wQ`zhF+O=Bkm;u@Od|vK$
zyN}vhRaM?F%Ye*uIz^|`K^TVrS`5pw*v&A&2!a6pejmY$y_MwlosWwHYbjQ**HJ2!
z*fm543>XXs`1CEk0vOsMTCLVnjB~kW(Sh&#@H`KdyK~HDvlYnI)gNEibrcE(aE<Ih
z0IJoh2+}}BqGI~+<6RJ?LTD3H_~~>Snx-uQ^rRgz9M*U|Ms72NH<`o$mB6D6a=Bc*
zjv{#kT>ui=!fe}y@kGHGwph>gDIz=G`7hI#I*{f#4z>$AykIESLDt30F+rDYEkKh1
z9^}S;4_odC11`+OM+oT%siPa*;s(VJuV5I41ZXLqSF_pt$q?6d@$saMXXewj7pQ$<
ziX6`68m?97aX@-2FBysZw61@jR{HJ`ZZxD>I5^pP_m$$m_&4C@lKl5#qEd<FNpDDJ
z1c^?69P*2^B$k(7K}va0Nc|`eA-km4$@(+t3uz<)((VNq0K^{Rm*!FE?*IS*07*qo
IM6N<$g1FxUSO5S3
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..72ed56bc383bb3ad69c0efa2c64df0fcc929bb9f
GIT binary patch
literal 8958
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
WOy{qsA)SEtLta{0sz$;%`2PTva3Ht<
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2eea237a2d8c125c6a1d93bc24c0cd5274b4a9d2
GIT binary patch
literal 9288
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
KbeW`4;Qs-jG^Tw3
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d12805ef0e8d1f05f6409ef4b13c3f03ba3f7741
GIT binary patch
literal 439
zc$@*Z0Z9IdP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzSxH1eRCwB?Q$0%qK@^-z4pNC0whA_)
zf}Q>WZ7c*E(L%0BX=N`+PJf8tT_K5D=&uO)fdnKWw&{YBA|&{+`+RTDy<Fmn9@)ED
z7ItUm&Fwpfh%nA@L?8^q60iM?T;KD&V~9Wy1eA4rbKoW=Z5){^?NhXREwno?SejVI
z?ragH3H&k!v2$r;S*}fO;$Y?oc+caqb_JyfpUnPHilI{kVlo*_=B9D-c!-<YHP+`g
zn5>}~;;v~RFdTs$6w7FKdsBT>9?C|wIKOX*Mx4(i?=2RP1IixaC+`$+=QWI&AsJ^z
zBJNOxxIC#sM-{A`EnqcVWRfL|5YIX#g2akkqH0_eP~EG?qIOTr(<1m6<#W?WTiZKE
zOo+`!9nJdFuZ<L6pM^9>r`xC3ZjY+B_tGq-<bE35QCa?Gc#fQ-R{d*?R`6eEiys16
h$O32F-}y^`0RW(&qUNAu*QNjf002ovPDHLkV1m5+yo~?=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ddd4cb2130b28944644838a11f4050da251dfbc6
GIT binary patch
literal 446
zc$@*g0YUzWP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUyu~1A@MgRZ*hL56~sJ^Sd%>if34{y&l
zhSxWT*ie?;VW8lAujYQS=7x`=iM7?2!0emC?w-T$r^xZI&hWL-@VC#{yw>r()%U>H
z_rcip!`S!3+4siV_s84!%H8+M-T2Pm_|D+?&fxja;r7zw`P1Y1*X8-w<@(p=`rGLG
z-01q?>iXd7`{3*P;OqP3?fc~J`{nNY>G1pM@cilV{Oa=h?eqNb_5Jbn{q*<!_xb($
z`~7INcsKw600eYWPE!DXzu%b;G{pb_0Fy~XK~xwS1;If|!%!3ez)5)sF@dTp1;HD5
z|GShfnvI~F7Ji^j``>dW3=;s>3ez{XldmWKep;aFaN#_@_X~lleSIEpx84!RdY!Wj
zJrSr!*73f3$&Ns;N8WcIm4!fVS@V#YiNKaUo2jx8oPXacr@R7TU7(FuScPhH_GN5<
ofWC|kAmH@e00dSIfItDjKePZ;0q=p3p#T5?07*qoM6N<$f+EuPmH+?%
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d67993d593dbee0a45c7258a9018438c4d89de80
GIT binary patch
literal 419
zc$@*F0bKrxP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzMM*?KRCwB?Q$0_^Fc3XQotO}V!^%X1
zQVDh>L|6U?@E7<Q$;QUQgg|10m3Av43q|Z1Jb?<7ByO+|+e!0PAt1fTzW8+a?)h0q
z5D}KKj_>=2%AdBZKLXG5uxdgrDJ7;~Y6*eKEXCs!uka6#W8>M&JL=j$0qFG>ah!Z6
z_&SY|O+E^M&Ya7|<@LX~@Amtd26|InVP$O<4)*togwcHfJKMcl5mBGEo58RYv5CwW
z1N}11*CB+|&O8;yTY9S|({&2AZ39YC>AYw{$_hXpG(ajIh9Qifo{MB8KQqa$AoD~a
z3^Jt@q9`s4bO$T*2)GC^<uh}LIfoz!pvk>xYUz+w1IRVVC<qkbx-K|Qw}yc8KXsR;
zxQ0QJD>@jJ-8Z&2;r4F$`z#m<BtqBewHqcq5Lf4Ct%r#$JI>z%3;@Cq+FTRhC|&>n
N002ovPDHLkV1ibaugL%a
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ff2ecc2f351ef37d250264aa2bb273de08518165
GIT binary patch
literal 441
zc$@*b0Y?6bP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzTS-JgRCwB?ld(?2Fc5~%sR=_DiXuQr
zNPrju-B_6ciT401BwmD_0WtFiz|O#o)PaGGN^Gbt0~Kw2clhi$NfARKmYh2~ci;VI
z%Zizy&QR;ey_2Xhx{9L7%t<C&06jMpd#bk1x~yY_)m?&qZ|zUjhp%6tTKo6hOcs9)
zNZOmw-q7%H`!eNs8W(Uld4hw%r3Z}Ppa0eWe6j;N9=*Zi%@K6_<Czmb^a?D+44v~k
z(6W)H+mKo-H-ZF!_F}{mF&J5+x5lm!!TFg4*r5YeZWCF7jj@RYOeKW4gql#q&ZZf7
zfKQT5_JQaV4EkWHEWSYnS%|aiPu=nWk?tT|fly^FKvK?kh4MCv7Rde-*_cBdF!b!s
zB*-o;<$y>&SW!TEe?_(G{GqG>6oFW&%xWr`oGNxUKuQ2`E?;>y0meZ|I80TxlmpcA
j-gT|#sOmoFZvh4XI{Y{EXY5e800000NkvXXu0mjfIC{Zy
new file mode 100644
--- /dev/null
+++ b/im/themes/preferences-winstripe/applications.css
@@ -0,0 +1,59 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Line up the actions menu with action labels above and below it.
+ * Equalize the distance from the left side of the action box to the left side
+ * of the icon for both the menu and the non-menu versions of the action box.
+ * Also make sure the labels are the same distance away from the icons.
+ */
+.actionsMenu {
+ margin-top: 0;
+ margin-bottom: 0;
+ -moz-margin-start: -2px;
+ -moz-margin-end: 0;
+}
+
+.typeIcon,
+.actionIcon {
+ -moz-margin-start: 3px;
+ -moz-margin-end: 3px;
+}
+
+richlistitem label {
+ -moz-margin-start: 1px;
+ margin-top: 2px;
+}
+
+richlistitem {
+ min-height: 22px;
+}
+
+richlistitem[appHandlerIcon="ask"],
+menuitem[appHandlerIcon="ask"] {
+ list-style-image: url("chrome://instantbird/skin/preferences/alwaysAsk.png");
+}
+
+richlistitem[appHandlerIcon="save"],
+menuitem[appHandlerIcon="save"] {
+ list-style-image: url("chrome://instantbird/skin/preferences/application.png");
+}
+
+richlistitem[appHandlerIcon="plugin"],
+menuitem[appHandlerIcon="plugin"] {
+ list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric-16.png");
+}
+
+.actionsMenu .menulist-icon {
+ -moz-margin-end: 3px;
+}
+
+.actionsMenu > menupopup > menuitem > .menu-iconic-left {
+ -moz-padding-start: 0px;
+ -moz-padding-end: 2px;
+}
+
+.actionsMenu > menupopup > menuitem {
+ -moz-padding-start: 4px;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..be1ed4d3893672f5e10f333a2fefbdf411377085
GIT binary patch
literal 549
zc$@(x0^0qFP)<h;3K|Lk000e1NJLTq000mG000mO0{{R3C@l|D0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy?NCfqMgRZ*ZI`uem$hw|wQZNRZI`ue
zm$h`9xptnqextr`n6_}4wvDgHk+I2=vdLV5o@9%tYL2IFk*RN#u5g&NahkVsl&o@>
zv2~rfdZE04rND%!!iA)}h^oYtv&)*e&78T;pS;neq@<;#rKQ2troq&x!qu$B*R#aW
zv&!4Ix3{>+)Vj~!ywTvlzrVx7!^GF+#n$1-$jHmw>CDW`&CSiu&d%4@*V)<G-{0Tk
z<KyJy<mKh%=;-L`>gwz3>+J08?(XjI@9*&N@bU5S^78WY^Yird^!4@i`T6<!`uh9(
z`~Cg>{{H^||NknEO9%h}01tFhPE!C6FHc`@f1jV9udm<l@5qzf)c^nhvq?ljR2UhB
z!Ld%mFcd)1`y4j}3_^gM(gGdm%Kv{&ClCk-ONoMF$M&NU>dZO9Od8K;P!5Cx<F*xf
z_fvohux^Vg*F#besMi<#>0c*=lZORI(@UsaYtbWdQJ#2f#4sy5uCb?Hzoal5>(!>S
z#JjqS3W)PQV#(#oKX+LdH=C3cOA;yPmrFi!R8=gEYJY2>&F^Qbm?7nTYtj^hS@lH+
n6Y_p3;}k>uPWOWbdE_6zD|K8A{`{XK00000NkvXXu0mjfks~Z^
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c40d15991dc6c959266353c06afff2ac93e918ed
GIT binary patch
literal 630
zc$@)t0*U>JP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!7)eAyRCwBylh1F`U>L{0Kxy}@0f9MS
zD)Yw(ZVu37%jQKqd-m)+?CyV{f5N<O2mKd3c-e_%i96^Bj3pYjFqs>=&W2`XLZR*J
z(^?&YY4AzDY2K&r=hOE|-ntlL=&se(T*~inEDsJ2XRLLtre&K=@3W<)dxh@3u5JOr
zPZEif<+-^dzrY)IPiuLwu@O`D_b)Ay<jr3N1V6tMKYp<=dw`2-^ZhmKl*X)+yzCJW
z{OUofycmyt$G@sn31Pi(<26a1+JcppEuX-(vyW0A(?RhE`YBl*!rQ{_yrz3IoCjKV
z;YvBpYYnKHt1khM1~Rcv>9yU-Jm(!2(`@`9<fC;=41940a|0f}mo!=cGx5236^-yb
zgl}gPoYjv`MZw*CjN*0~!Ri{Kf=u1B9=@stQ4iloC_N1(3P5oOw!oU42^?<C#-Xb*
zY`yz{*2y85FJgnjX$9g~7$eDf1fn9oQcriJwxCHdoo~9y%wJC+G?T<AZMJU0aaDz@
zWuO)j(WH$A#WcGF%#p}N2{Z8kbUIPp8k;geB3{!`*_LS3%QkEn9RkgP>m}KSRf0_i
z{+(0mO(g=z?<z2Ye)|-E1PvOfUQv*Yj6kN1?M|3Ep@qUYOpfx%9VpO!{&PWXPr)?3
zkZAr^2cTQg&(o$T#t`m~)3x5K{SugPL&_aOLjSetJT2CB(eL~}^;3WW0Pb<@C7l3D
Q3IG5A07*qoM6N<$g1aRmi2wiq
new file mode 100644
--- /dev/null
+++ b/im/themes/preferences-winstripe/preferences.css
@@ -0,0 +1,192 @@
+/*
+# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+
+/* Global Styles */
+#BrowserPreferences radio[pane] {
+ list-style-image: url("chrome://instantbird/skin/preferences/Options.png");
+ padding: 5px 3px 1px;
+}
+
+radio[pane=paneMain] {
+ -moz-image-region: rect(0px, 32px, 32px, 0px)
+}
+radio[pane=paneMain]:hover,
+radio[pane=paneMain][selected="true"] {
+ -moz-image-region: rect(32px, 32px, 64px, 0px)
+}
+
+radio[pane=paneTabs] {
+ -moz-image-region: rect(0px, 64px, 32px, 32px)
+}
+radio[pane=paneTabs]:hover,
+radio[pane=paneTabs][selected="true"] {
+ -moz-image-region: rect(32px, 64px, 64px, 32px)
+}
+
+radio[pane=paneContent] {
+ -moz-image-region: rect(0px, 96px, 32px, 64px)
+}
+radio[pane=paneContent]:hover,
+radio[pane=paneContent][selected="true"] {
+ -moz-image-region: rect(32px, 96px, 64px, 64px)
+}
+
+radio[pane=paneApplications] {
+ -moz-image-region: rect(0px, 128px, 32px, 96px)
+}
+radio[pane=paneApplications]:hover,
+radio[pane=paneApplications][selected="true"] {
+ -moz-image-region: rect(32px, 128px, 64px, 96px)
+}
+
+radio[pane=panePrivacy] {
+ -moz-image-region: rect(0px, 160px, 32px, 128px)
+}
+radio[pane=panePrivacy]:hover,
+radio[pane=panePrivacy][selected="true"] {
+ -moz-image-region: rect(32px, 160px, 64px, 128px)
+}
+
+radio[pane=paneThemes] {
+ -moz-image-region: rect(0px, 192px, 32px, 160px)
+}
+radio[pane=paneThemes]:hover,
+radio[pane=paneThemes][selected="true"] {
+ -moz-image-region: rect(32px, 192px, 64px, 160px)
+}
+
+radio[pane=paneAdvanced] {
+ -moz-image-region: rect(0px, 224px, 32px, 192px)
+}
+radio[pane=paneAdvanced]:hover,
+radio[pane=paneAdvanced][selected="true"] {
+ -moz-image-region: rect(32px, 224px, 64px, 192px)
+}
+
+/* Themes Pane */
+#BrowserPreferences[animated="true"] #smileysPreview {
+ height: 25em;
+}
+
+#BrowserPreferences[animated="false"] #smileysPreview {
+ -moz-box-flex: 1;
+}
+
+/* Applications Pane */
+#BrowserPreferences[animated="true"] #handlersView {
+ height: 25em;
+}
+
+#BrowserPreferences[animated="false"] #handlersView {
+ -moz-box-flex: 1;
+}
+
+/* Privacy Pane */
+
+#timeBeforeAway {
+ width: 5em;
+}
+
+/* styles for the link elements copied from .text-link in global.css */
+.inline-link {
+ color: -moz-nativehyperlinktext;
+ text-decoration: underline;
+}
+
+.inline-link:not(:focus) {
+ outline: 1px dotted transparent;
+}
+
+/* Modeless Window Dialogs */
+.windowDialog,
+.windowDialog prefpane {
+ padding: 0px;
+}
+
+.contentPane {
+ margin: 9px 8px 5px 8px;
+}
+
+.actionButtons {
+ margin: 0px 3px 6px 3px !important;
+}
+
+/* Cookies Manager */
+#cookiesChildren::-moz-tree-image(domainCol) {
+ width: 16px;
+ height: 16px;
+ margin: 0px 2px;
+ list-style-image: url("chrome://global/skin/icons/folder-item.png") !important;
+ -moz-image-region: rect(0px, 16px, 16px, 0px);
+}
+
+#cookiesChildren::-moz-tree-image(domainCol, container) {
+ -moz-image-region: rect(0px, 32px, 16px, 16px);
+}
+
+#cookiesChildren::-moz-tree-image(domainCol, container, open) {
+ -moz-image-region: rect(16px, 32px, 32px, 16px);
+}
+
+#cookieInfoBox {
+ border: 1px solid ThreeDShadow;
+ border-radius: 0px;
+ margin: 4px;
+ padding: 0px;
+}
+
+/* Advanced Pane */
+
+/* Adding padding-bottom prevents the bottom of the tabpanel from being cutoff
+ when browser.preferences.animateFadeIn = true */
+#advancedPrefs {
+ padding-bottom: 8px;
+}
+
+/* bottom-most box containing a groupbox in a prefpane. Prevents the bottom
+ of the groupbox from being cutoff */
+.bottomBox {
+ padding-bottom: 4px;
+}
+
+/* Display the message theme preview browser with borders like a listbox */
+#previewbrowser {
+ -moz-appearance: listbox;
+ margin: 2px 4px;
+}
+
+/* No message theme preview message box */
+
+#noPreviewScreen {
+ background-color: -moz-Dialog;
+ overflow: auto;
+}
+#noPreviewBox {
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ border: 1px solid ThreeDShadow;
+ border-radius: 10px;
+ padding: 1.1em;
+ -moz-padding-start: 20px;
+ margin-left: 1em;
+ margin-right: 1em;
+}
+#noPreviewImage {
+ list-style-image: url("chrome://global/skin/icons/information-64.png");
+ -moz-margin-end: 1.2em;
+}
+#noPreviewInnerBox {
+ max-width: 25em;
+}
+#noPreviewTitle {
+ margin: 0 1em 0.6em 0;
+ font-size: 160%;
+ border-bottom: 1px solid ThreeDLightShadow
+}
+#noPreviewDesc {
+ font-size: 110%;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1248dd30c11bf6f8aace0d069da3998c98741413
GIT binary patch
literal 767
zc$@+M0s#GqP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!p-DtRRCwB?Q$1)DK^T3rGrN1cduJ{e
zxFmXnfQbh63JW1=#3pqRf`t+gYyt`qEEGkILa?!kmDmeP6vSFBqL)T4l?QgF2qd|?
zDEI$2yW=-=#ww|tVVGg(eeZkUn{Sy?3Wts4vQU--a1Ri)b`~W&3@32J;Euwh*{4uk
z;#uM0Q7~Be&tVkg^ZEOkOlIYKp#Wjqm^yU|Rt%IqL?k3cps=~QsVbEUTCEmr!Ze%B
z$8&RY%SJ&Wk+_%~NW%Ahyx)6`?5pFroSny~y$^V^{Svm%aIJa)>jUrLI1Vh!(%4ID
zYims8ayf5oZ0t11qM7Mw%wQTPzNPW}#}n`X6s*8W&BD+Uu6Q?5rCBT%;d$Ok%I%9V
z3^T+!N;`VJ9ysT?ef|NM7vjbCiV40xd<XN+B08N8W#@>ZNDEKXJ}wwzQ?%S}w~JD#
zjC48;*R^qLl1Lo#KuKIpEJ5EBjxZ&2CIwC`7CS3woY7hJCFd4?ZfzkR1PJ1B+!(n>
z1QA+|CTjI2N#CR3j=^dbL@*&Jc&c39H&2pE4I)VfwcBm{+TRBwLKP|Fe4}26MLy|n
zs@3YoOlrb&!t?yBu3yR?W$SmP<GLnLN{NW3OJI;HT|Z--?tR+nnN^e(#nOICl6h{-
zMY;SNj6fP_G0QyHfoc6D5<MA#DUMdV4%-oNQK{BcYH-MyXOTw1Z3xj{+8a$ILurC#
zPoiU0@Hzh$*3Kx#C&wdQRv<(_i&D&V_dgXDH7XG>9Q;QNP9X5L@DX3uH*{%%a9ww|
z(P#`iHgy;maO^I4_pbsfA=1)ykB~>&r?Aq&?8E}(h@fwBS0o1pS2s3tcgc`r+{ouj
xXXiww^M+Aq>Nh);L1(7P8H=hx;IIA>U;ua(9%EUWV<`Xt002ovPDHLkV1nH7Qa}Iz
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c210e8473f4c7ee9958a80b94965d522a15e4584
GIT binary patch
literal 791
zc$@(j1L*vTP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!xk*GpRCwBqQ%^_~Q5gTt%-fxvo!LKb
z?rOAaD+Y>x@L-W5v_-X*SQwRo7G!}+*r7v4b;+W_n?%u`Hav9c804u_P+mF)ff1Ry
z>bSe1uDdfkyF1gH5w<Lae(=3FZ@z!O?|a{448y>7Xq_a6w&H-U5KByaeUf7Swj<a9
zy2j$f>1g@<CiY=lJ1fBO@bKNnrnX1A;RMUF@K?IZ26OUE`FrB&E2CH}LdmTnvG8Rq
z7K`1t0tBk|9_r~igYR=J1VKPstAxk#f3ro7oX6tgB67JkC`#rqP0X-#5vr?$^)5+5
zq|=Xq_W?AGyHUz)txj8z(0#8NgU_R27y_@is*e74vUCah{ej&a;ZZ06H;;`W5b`40
zb+YW7p_FU-WY`0F^mSdMWpWT*z5rE)%`^=jPX%8r5&T#H`s!|>s2X_r?ip%YcUjI^
zWfe<reK^-Xh)Adx*=!aLUbIu+CX+#<%k84H0FH*6`KIA`<tVzVujA8XdeeEzhu(uD
zI2yhTP1C3?1Djni$?YSO%h#afotRG)5vU~KD(uK9z}e<eY^)o2J@o<?4vgSb;}xi?
zx>-^t1Kw_fDEXR+$Lnvg*&N8{^DvCf#t9CfRAO;8a);it0~gzGSbFn{&FnnS({mP*
zRMA2h5T7is!0j#|l}cGge@e9e64L234OoIX0|m3w6snr1CG!#~m2^W8oQTKcG>9AF
za2U0<wbmXAdhp=k#Fp#q@9#%4nM5LyFxlv=0YfAlM+ZZ(6lQ%UU0v6~(H0Xzwn%V~
zAE8hP(;ug)o)d|hTU$=0mZ~~CJ0Qz4bu>qHg9ciIoD?96LOHuAikO>U!tCrU+B^2+
zXY%thGc+_bz&pIRiA{8y143yTW}{58Kwqm)#rQ3ZsViui^}M<|&g}G@{};am7y$KC
V4iS|FcUu4e002ovPDHLkV1njJbGZNj
new file mode 100644
--- /dev/null
+++ b/im/themes/richlistbox.css
@@ -0,0 +1,36 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* Mostly copied from the download manager */
+
+/* List Items */
+richlistitem {
+ padding-top: 6px;
+ padding-bottom: 6px;
+ -moz-padding-start: 4px;
+ -moz-padding-end: 4px;
+ min-height: 25px;
+%ifndef XP_MACOSX
+%ifdef XP_WIN
+ border-bottom: 1px solid ThreeDLightShadow;
+%else
+ border-bottom: 1px dotted #C0C0C0;
+%endif
+%endif
+}
+
+%ifdef XP_WIN
+richlistitem[selected="true"] {
+ background-image: url(chrome://mozapps/skin/extensions/itemEnabledFader.png);
+}
+%else
+richlistitem:not([selected="true"]):nth-child(odd) {
+ background-color: -moz-oddtreerow;
+}
+%endif
+
+richlistitem[selected="true"]:not(:-moz-window-inactive) {
+ background-color: Highlight;
+ color: HighlightText;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..14ea2967f031b5871c516fbb9491ab2ba247f786
GIT binary patch
literal 678
zc$@*I0$KfuP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wYO8K~yM_m6OkF(s3NdU;fxv{WMoNr;H#l3&BN^dJ1;)64IIx
z1a<YYLx0IG-Mj=HIz(G#3nj)H1cSUNQClOS#Tp~0)6sN({koj*4qx{p*kunqmk;mf
z^L}_f&&MJn{D)k00=NytfDlju3c!03#djx1El1*9)DNUlD#?f!lmg8GMh99t)N9bz
zGr$yyV&zzzi~6zfbyau!!sA!KYB4Vqpx5Vtu$uotc(7STxK5&2vGyIL4UgY9{kly2
z!2&bc4Z6|;8+4_|Om2htqXnj4l`)3=J|Jyw&PFCsYL0LS&fVfe{vw&oEH}rtNj>!O
z^m&!f-$zI$?-P&yhQ=pYD}kZkMY55!EKiD5QzG3>2?PQX2n0m-7e)T0MB0ld&NfBX
zQzC^)k!&Pw1!5@0ncz|YF*^`KbC}_@=b4>(0T|HvXa;30G5hivSe($DH^rI*AY=zh
z7@Zh)1?@c1;5VR6^VcqWTRMY2o#>?shznW`b4jNIP_hFBTKbXo{brq|Cts+n)bU&%
zV&`WAe|VVj$2ZWN1AT`&K*3DgrRKOA0-J@Ew`&Xs&*LBSV6|E4b$e8ncc`!Ja_vqK
z4g}WCv=2-22H$9M-|eNd_ZRo5Ixb1SD9tS$hid>$uR*<>AyK?{SduBW%T=vW!|ioJ
z7n28l_Q36RnZliN6_`4`+fJ3_g4cWw&0&Vq)?v2>#%bL?i8K7Fe`OsCb246##{d8T
M07*qoM6N<$f^)Yeng9R*
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..46cb432cd74541585dcb6a7a6158102139f109ef
GIT binary patch
literal 691
zc$@*V0!;mhP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10x(HLK~yM_m6P2|lVKRffA2ord}le>+6P#W2hKhWa*H6+8Xd$K
zXciW95*^lG5_B9p5yDQSq_j|m2c<F4KK3riib-UlgH7E^H@CfOdwn{1)b!8`?vsb>
zdhYwVp6gbG5bVQbun&j;As_%O07)QDRC~3Ts_cl%&(HdXUl+zp4fFZ3$ws)hjd1TV
zre~IzPGoS18iy>#`#V=$*Bm!K<^GE&gI*Lq&u_MP+Rq)w(PEWX3t&rDxm0H{^^>mF
z%~b?vh-xdQ?FnM|{GP6G2M(tTELJeHr>r<yU36XS0Jq-*#AN4*?mkrYB_{*mxPX>E
z1?U7jXP}+|r48--Wl-z{+rL6_7Je*%Ug@_05stXQq(Jjk25<HNu(&V;#t7JY7`%0N
z`z!&aIdHlmw-hk}AykzEp;-k8S%3gdHfc_EiqU5yfDW}8X_lT~^yy<z>`<DL;wBqF
zKoJw&9|?4ZXi=p(mcu|5M17CjRuIilFM<J-EAT6wGyzG<6-hF{sH{VyE=dMtQ+YBU
zGSDbWjsU6^fTRhCQ^<oMU<=0Yzoocb=5Mji+@pDBWAh}3(`Zl9+mi^`$OFW8Lh=HS
ze*mAKcSB#ueJjw=8ypRJ3En<I^^eY*he`S$T!OVM6tZJPwd?y5hTHGK<6}9shQ(&a
zf7&Ix2{38~=Ji$ho!w2?Znl{WdVv^rbpWSZen*oHYBl-BjXda;G2k9iZDrqL?BW1h
Z^$#-X^g1^pC-?vW002ovPDHLkV1kq7B;)`9
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cf0096f553ef97a6ddf0e57dbfda458f832097e5
GIT binary patch
literal 775
zc$@(T1Ni)jP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10)$CKK~yM_os(TilW`QrfA2n>b8F1GO%v0QnG)ifLX-}L!b%A2
z1H_A<E{YJc+b+83D!QvK$_gYTOo$RfGa~vx7=;_81)9N}^DUijwh#BZ>E^n4Y3XeT
zo|}jNb2yyy`wO{TjvY1XItd&H8i5+%JKzPz=<vPV{#3|^M_sl+Xrq77lQ@x9>u7WD
zrnRMl4<CcPAODFqvrhLR!>dZ0<^mnQ(7*7g%a+;7P2GN%vR>?I!njK#H_QQBvf{A~
z9`;Re^+>_8N+HzK;R^{s<+E#h2P{?A7D|di0SI#T%hw1Eb;WXn9FPT8BZPy?<7aRB
z&k2X?ik{BLO<i`o9i>u9B9X`|l}h1oI4~FtB$LU!AB{$7s@4ptn(Opsu^AI?w;KRa
z6cI&{g@pwqDT&kRq^hba?~9^HJRYaHPG6?za+}S8fFD5+$Y!&7B@zkBN(=D&{X6_j
zCPOB(L6_TXR`&H&+)~&}wEcshP$(2glEm!nEP7p<k)d`TJ^sw%QWT|9$^860b8~at
zxKhs<r%ET}Mh;9+v#;^BC(QFV0ajMixEd_<UfPebNKHJp$(;w^@J)s(F=;t{w31^7
zEfARTssJxZsj<DS9LujHjpu9SjU#W@Sg7WDuM@K19hk<|S`NQg0lW%ej7S&(0du7h
z&)rF)fi?LoS^37%;2NHLlbH7y5fC621{nJb$qTHdo!Cp6eH+C0WEzcLjiuT|_(zlt
zX%km>EsoX-SXqR~;xHY)Q+dJ=n8H$O#cC(LmLW6~A+aQ3uoYsfDMqVT!O9Y>E-sTp
zCTu&~z<mk|J26>6R|py{q|>l2$)l#EVc_ykw*T{2{Q(tPHU&q1EGPf~002ovPDHLk
FV1gA!RG9z(
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9ebf7d8988ba0df51b9859d15ee1ffe8d236bc37
GIT binary patch
literal 685
zc$@*P0#f~nP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10xC&FK~yM_m6J_KR8bg)pL-o<?2=+S-I+@wO@Bs^i<!Z|jYt&4
zfIlsQ_AUzAv~ky}Hg2L#%(6`oB_xGnf?{NU!puZw)VQdOF=s|cveEl9>U=G(I!bMP
z;cO1yd(O*yo}-8edo&#B1TFzlpczO531Ea+^7-yjWyd@m2>@|4t%t*Y&@}M+z;<BG
zgu)V7<{)sLSTa{J4@UwhOcOM8js!tf+yezDZ>>#%Y!((5@(3-&k~wuNL7bqWOQS*R
zi$nkY8OC1ELlum@nWsNKL+Y!81Pt&SIuLhn9twA&Y0t{1PjTyRj+%xx&b7AC(VB$y
z3@D9Eq#{gBO;cQa%k3Kh)bF!kn_b9II4+;MMe@BO8yN|OLJ|svL`vf#zk5Zj@m+fv
zksrMxiEfdha9jnVXd3&{0SzGP0h;mp+;Xf@2A(_uY;az>McI=KJbpkysfOaHYxep8
znms@o+lk`Qz<NjI_-DYPIJd%T*5sgW5^l<K{?JV><ldtQ;5Yzj50GHZ+=*T)7MQ&E
zk=#sy`eU^$fBQqO>mn0ZPw=XAl6G|#EE6E%0Y)e+U8BAMP?&x3lQXfSbo7N$t5nJx
zW$xtL;1_(@Y@)p`4J%6kBioQXMK^j%HGZ7cb!rT)0*OGeT+PF|vs|f7(O_qwurNq0
zd3i5kenUqOf}&KKm2J`l7PGKiA?#natF<2L{O)sjeQr6H=|;8x$M$aR<5&F!2}25J
TirF(300000NkvXXu0mjf*S{k=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d80fc10827e5cbcae4c195e26caaf236a8c0670d
GIT binary patch
literal 676
zc$@*G0$crwP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wGC6K~yM_mD9~@TxApn@ZX)z+)1u&Xz9(zlvojjh>$=#DJZmH
z$ZCi*M67PyxYIwvo&SRy!HrOAX-h)Wtkg;cKQe=utU{?^KQhy1YKS^BcP5#+E|Rum
zanlFR;=Jd1&f<NZ6QpVCKUglFM+wuIzy``#F;`jYrv^{O%f(TAE{YZm$3zifo}^8q
z$>Tb$<~4j`uJZ7ic)2(#ux6|<vbf&1`di)1*%M~Zp7720o4)&D)0wH*{8XN;>LaNs
zbCrir#8*4<=)$L8Juv^yq_@rt3G9-hN7~K#vHX|C8|yy%a9nP?cFkPn-5|Yw`n)Jw
z^u~lv_@?zclSmX_zsc@>f^n7GZxalde0g2i`iVOmB+dCON`_-HfpDng!u#jI?;Bsx
zy-5C?3m<%R@OF#MpE(*+yIaa&S`>L93`Q`W#e^`=g9gcx%U@qaLi;8?B)43?^d-Rn
z_m+6nARd5;AiaKi)zHal-&P6m-YE(J>9Y^h%TY_Y^6P#-Qy{rp&Y-N>+9#&y?69{>
zS6}VY-r1i+(t>gpD{_sGm0q>C*VQ{53cClSCkuOYj)XF^CuOsTXx}HX^3-P|g#}{;
zfBaHYU8_4hI_Rb2gBtage`+m-$=EB!F}A8at{(W@pRl+vVr0x-r)TT-w(Wa=J2rmA
z@N36pa~Za3{P}#s`m;R{EjSwQ+Y#nzw`n!msgwL)w)^n{SM@K6Mf76eEEe4W0000<
KMNUMnLSTZEz(E-R
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b0d4196537da459df1ff0176d832f92fdc0b8b5f
GIT binary patch
literal 672
zc$@*C0$=@!P)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10v$<2K~yM_m6P2|lVKRffA4(v^;SA+a}6sZikU^xHV+aElOS}U
z7+KI+9z+pE=h6SrSrJiZNeMG!Qv@+X+90=sq{v~4jAYHNXcM>TKJE_Q%1K0c!E^F(
z|1O^E=6VznVT(fE9-s^G0d61;M1e8<u~)UD${#r7buOhgo;(Y$cCQ<)oITS-NBaS$
z-XwTEy^OhB;7Z%B(SuIY0RC8N6ApQu<*LlypDZ?ByV**8gGo0OpsJr-c7sO`XSj3D
zvZ5N46Zm7P-*5nztB?IIQ0svLNT~)kf>@!HgJcrY$zlAl3yK6iJ!skpEpFJ+Mr`gF
zP{i9j1*I>b>?1bc0g46hp^uOY!$KU2`Cb+1!eIx40@m~NUup+nG5#1TgJ5o_|MJye
zchj&M0h=AZCb|rO4^3lRvT6W66>wuR>-h@f480fxim*PV=Pgb%^!zC(7FZqEVUroa
ztw_)_gS*+sP7Uh#|H3N3S{|0>qACz&E$>6q7`^*}rnZa!eC_hvFx~f#Lm>|kRe>?S
zWv;V(4||UqvA3L}>2&AcU}Ta?W(2AN*$luKB7y`x0eR<_^1^^j-0qZYVo_?9O)Sd9
ztxhR_8W4&2MS`Ayh-@|tg<0&b#&W%b_b)$_O*^n1Y30ZK3=Q@)CwmX0=F;#zxq?vB
zFwhO)0T!(fn;ong)jA`Fa!Jpa%|J0f4BXh-?OJW)SN#Oi0R^pzo^-$f0000<MNUMn
GLSTY^iy@={
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a7e1bd066dc56b8394bd3377bcc0f622c56c8028
GIT binary patch
literal 461
zc$@*v0W$uHP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10ZK_kK~yM_ozuN)ltC26@!z-!8?v8**x1;pjS_o13-3TI1VOa%
z5(FzP`~t5)tgI|eBPbSD-hf~y8lsR0DsDEfO7^jEH*D5-gE(;D%rnpboH+wilK9`X
zFiA=&r~BM#aCpSx7j7kaQc7traRbeYO*~Ap0mhxrE;D$*=ml9NM;J7?-Dd3q+xN&t
zezsZ1(aDV)O$N_Nrs56h^6L?!Y5guc2YEe#kM$X51`hdNqrD>?Hj_Aj4@1h^ng?mu
zXhB71cjiT|9%oS1befGz441i|KT0IgW%U}>e&AzvT6{!z4~$-$ji+<KSER)^oY-Y1
z$+*CoE?e(sz%|lih;w`V)0-rkTt7KA{||DCttD>GdjEox=<w_^+aXt|I=n>rCm6jJ
z>*pD@_=J9~uTC5nSXtmJR_1xie!r@eawy5?dFQ_YX((NVf>X4W00000NkvXXu0mjf
DrcJ-@
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e7072732a52396dd3b73b5bb4a0a8e54f110db26
GIT binary patch
literal 613
zc$@)c0-F7aP)<h;3K|Lk000e1NJLTq000mG000jN1^@s6?Q>5r00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10pdwSK~yM_jg!A?6JZ#~Kku6u>w)5sUhe2_!NJO<gA@lr2g^wz
zic1k(;^5{a?bN}^zo4@qh)au-kW~<@&<0cx%pizM&ip#7Ce0ahkHcNOOR3@m-{s}~
zexB!f-{(;x!c<g?E5I_a2+RWwU=OI_)}I3?I1eE3M*RU)iv?g4!zeME2g88eaTo^B
zA3(PQ2ZL?ku5#<^`~t~xF9KAH1r+bFY?C<)w2Ghtgt5i~p2w)$Zp~cY$%MWR@tMoU
zg>Op1HXl6oIF@TM4nr<pu(-5j^Ws&LmpdL=tr`6cS-f-241Eng(Bq1dinD@YJmc&<
zWEE&4k<Omzp}NZ2j~mbfeAYCu%xpd?TgB!~EFHaATDL~8S@J({#{cZm=P^=ocID%$
zNUJPy*8<4Kx+C(nEF1TosdM>M7J0uaQgL=g1SJ*c8w(33$z_tP|7d|RFd9SS?RVVz
zDGf9j2Fc~LA$^vvBM6A+0}bra9~_<OZ=iz#@o=Gm8r@Fx&qqNHn?r&94nPfHGDusP
zb_vS{1&?l4IUKj2xDl}3gl=;iw|+ehh$b;_o0t|Tl{h7px$Qx(*+MvnTmO;(AlZc(
zqr~YvoQQWJ2%?_%J1~rPVPc*JOyWPbF&)1F*J}IA2}qs800000NkvXXu0mjfVvYvU
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f375aefa737eb75545983547b5a9406834d5d7d3
GIT binary patch
literal 701
zc$@*f0z&<XP)<h;3K|Lk000e1NJLTq000mG000jN1^@s6?Q>5r00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10y;@VK~yM_m6KmcQ*ji>Klf_WUHpfvZI_Y#gM=cjW-mceFTyqu
zZV*8aJs1cgL=V065Jf@s*jv$qPvv8RGzX3Ts1-tPlu<A>t!Qo2x!bn9+sy6P!<}sl
zd+5O72Z!JHa}I~^k%SP`gx}o<cz_<D6NmsaKmcE83_yZI00Q1he*k{B<8xwtc;t1~
zTi9mh)Cm_Sk9Y85;w#UmqBLyeICrdhe3!%0FZn`O*Z@(_B@^IxJ2pyU_Rh1sePHM)
zEv*(4Du9xine;mM@4aEDw`sYlce<{m%O!MNn}A2Cs>Ti#WOK$EK(X=$)?9eouY(Sx
z@XGkzeJF~C%Ly_BC!+)>qfmzllOZ@2B{&rY31*uQZi+#ts~+&M-9}NswOca`kIVsZ
z;e01oFCXT{?J&a+&07E2eGFV|V@y9lQdi=0YaI_{pa(@^RnIfOm?1o&5q_yLw~%IG
zF>ThKYJ{I?%r9kVOviZDa+8SAzKJtLCGq%3hVJfWEOj+wLuG*!|H@xQh`h_<3$@5V
zgnXg$xmr+N6IEF#Q1%BhFvFU$b*F!Uat38{Ap-$clTZ|7zZ)dpr?wO)KBUOT4JZjn
zCjkNg6(87D4X4VN=@=i!mr&ZRG})~DT*+aia_sl)W@nEID=}D&jp7TPt_C=en8l{r
zu{#k0lAqEf7k*&d+lFmVtLd$kIHY3B2)giv5*0xC7J$1nDjIDzuqt3_Fc+3H%(3&v
jC@{Dwt_A$ZHCD%OSehT~Rvemx00000NkvXXu0mjfgIg&v
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c20601bbe2f51f977dac330f09c9afe53320e6f4
GIT binary patch
literal 698
zc$@*c0!96aP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10yjxSK~yM_os->5Q*ju_Kj+MCdStfg+KZ71h07QT9=k}gX>_v&
zhF$Km3nRMePl<wxpy;B!Y!sR|kwxH*JCL%<V?-k4ac;|(>DjC2*Tv?`qN{%Jy?J;(
z&+p-RzK<k?py5raqd*iG078HcB!OvS+MA=P(g8fB`j^w?XA`seYbARNBbQGwJk-U9
zk1Nc4`h~MvAU^1N+wFJUB&MYg;VIQ$wZy``_eJ0MoeQ)bbJPk7z^Z9`tIU(fbKJe!
zyxt^B=ZR_QefSl@;20-^SO}0nmZbyOstB+^77`c+WQ+tc?S>>K`$tif*PIKnnk^8&
zH3PuJ(-As-3ahIo@$nfDF!5l7&W;xNp+nKUE(1}HdoeNv)GG-hmjXnF0;rJ$pTFd4
zvB3b5iviSV0wYrZw-+EPiOK#sde08vQb;Xr5Dt652C1(bghL)usSUzC9@wkLPJ3Y2
zgrAE^Nlf-{)7R(1VFMc=*Tvzm*!xSBJ<#X#GN4l|QO;Ko6{|7XIwAq0YEj;;K&b?v
z%RrJ{6T8EP_FRYRKYpqg)L!b?oi-?#07)5`CYMD*qP@F~+57WsF7Gsen=3oaKAflh
zR2vc!Y-Ita5BKZ~ju8m5^lk<1#Wx(ScD!fYWWR4xHY=#{UV4VRAY(vof6sM?A+dlr
z=))JFv{NO$m?OVt;_@r_LmfC<n;^3Wzm0VSM;uo7Ht>jMWem3$S`=_NYr`p+wN{H}
g0=V7i?f<;0KdqV*b^1q4dH?_b07*qoM6N<$f-d?q*#H0l
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9903039dfdcc35c2f06d312ee061a1ad4445e72e
GIT binary patch
literal 728
zc$@*)0w?{6P)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10#!*wK~yM_os(TilTjSTfA70F^<9b7e03sqwN^J~Q!j*qKty6}
ze$<6vMG-;LO&?%4LRKhr5rs$#q7T#{5)y3^l|fJ!UN|bdh$TUWu(qk_hOg6k-qXcw
zy4(KnTs-i9IEUx_jv}QbXU41jz%if(a06jr3V4k-G`4+J$%e<POXm|C51&u2_)JZs
zv3@V^{UwCI$9Xd`i@IviR%d_ZD6*c%8;Wj)$E!<)l+$<Lr}R_j4q>%fSYH=7b&W{G
zz-G0uu`U>V`kBiO1u=`FRN@Uqt(!LpSjx-wwlhUM8eV2;IgP*3j?<~}b8eNfw<{Fy
z%;R)>6&4aY@kjt@Rb<fPN7F_>EbZdsw2MnuuA^xhf%~^fC*P5`qk)c#*Dwr&dv|Vd
z<iHF^9gC1Mnvg+HKz?hMU7bEDgpk{3Xz+247edIct3D~GnxzbS0xD30rlDALR8<9_
zySp2J_LFCGysD}wc{&to05vM$#+HxVh+&#$&hoRNCpq3UO=LO-wtN7$3WQ0mQD3Lh
zbE}hNGKmm^{=Qyfvjg<^^&*5InM~4ivy=K-71q`O!io%f0#xj|K#7C7=n4ZP36>IR
z{0(*v*Y4)i<N{+8n{E4ws3^6=!aPKOKghIQsEy)sgGB*_i~!`O%xw}9euW`rH2s6*
zCAzbPGAAhTWq5|KFMeb(Ja}RsRmWW*fOrHJA|rT1ty#iQn8xAM(aS(lvcav>CB*;0
zVkCy75^pG)!!{70Kx?7ck$DbVex{sN1D59@WsCqFxorREulftSF($p>ywR2b0000<
KMNUMnLSTYTyFN7l
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3de53a97d6fece2c00dae657f9e944fcfd0b6e6d
GIT binary patch
literal 556
zc$@(&0@MA8P)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10jWtuK~yM_m6Jhh6Hyd}zxNsw`=AhTGMS<711>ByS%`GeZ5W88
zpxdtdBMOB=p}!!T*|-un7NsFuL9m-7P<OL%J(DI8R60poGp~!6m`RO-2hQek&%K9x
z&l6f}me4HMfGSV{N<aX#ffiopL%LM_7B|a9pn+0#3Kl2@*&K`~a2>;N0HgQ}IKb=l
z7UE{Ph~Nv3YqRNq6sDmDk{PEOq6qro6`H4bonB_<prMPdef&1!LH3GilCbm4VfVSq
z$Il_3E+R5ga(k0-_{z1#AZ!48LZ5HfQ0hHTN{|sCF(f@T#a|k}1~86aNT5o=GFHV*
zxHhB2ye&~c-U6sfpn_6ndyjlX-bZZs9G!FlI6CbjY#-tJh{wKhw5|XuLZ5H{U~6lG
z?Al`5zidx|+bIN>KP3<_o-7K}#pySl;$#94NTAJiyn4dlnv7zAwgg%X2j-5e8r&Bq
z8omzzTJw;+!*=U9E(m!2vdMkyzwu17eh9<x46n1doG{C^u^n@cIdp1bKZ0+Ig#DTA
uhpJBAGUv$V%yLGtu{vIr?KJ-5SKR@9KhV~4hp+qq0000<MNUMnLSTY~1?=Gf
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8c579f47e383d63d755a09251eca17ee7a8fabb3
GIT binary patch
literal 682
zc$@*M0#*HqP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w+mCK~yM_m6Op+Q*j){KX;pVySG*{ubZ;y!4V71r0$-gLBb+r
zWEfbF;ft_`{saGr-h2sqD3B5|BMGSoX^=0wgr(3(rLr++o3YK^-MQ`F9`4l)eDT0}
z`SLq_59fEjf@N9!hXr*M7y)8H6vzS@;4Mk*_0gxop?E<J0n^Cx7~KlUGKgL<8c@@r
zRD`-d2c$@9g@57&HH5%tE7TkO^rwS&A9AQe3W<1__e(jnl_EE<hq=<#L@4HWu((W8
zE4Um7(`K+IIQ1;Y`c{j{i9r&>VQ@oYILzdOLDsigOg+tE26}?Pw7vPw)lp=5p8hDD
zx`y_305DK5E<y7b2<Ong-2lOd+P4OkkFb#iL%-tzM(9?+C4h8`@q2LqHnWeRJp<l2
z<M$_=SsJR#(5b-o&k+|8LzX!aBpD#)0iuXruz>m^voB@<0~$+U0!EtI=TAWJL3Pm<
zi(Y`J2gqVHVt8bzFQZ1*fI8J5W%jmpP6u_=^98UZs8#GGjRrv017xV_ht~J2CDM;p
zD6EzU^qpaMvqGr9i}=GKL|=#FPzT7^X-o1v7oy-6SbeoYSL7_AfdDSI3$tZX__9lB
zqs*n-5olZR-A?<UBrgf}j_vyu8hcIry-t9ZLldgoI$o&*Q7=L%KSxr#dr*=Tzw<j{
zrHEgVpoPu0LlgXpWD9rmJ3#9AZu{ghIu-jnM6VrAU59cJjN`g}6eqZ<zo`xCXRRGu
Q4*&oF07*qoM6N<$g3oL#I{*Lx
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..65ee06bf7b41197695bcf0fde9c27ad46e3e822e
GIT binary patch
literal 671
zc$@*B0$}}#P)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vt(1K~yM_m6J<rQ&AL!zk8eJajjA$4+0iS9VA3_(3?RJO4W&m
zNK1t(IMEC<aN<v~gAQy-M-~kj8xle$S_o*t+=(wz#8OnaX;O<#Z63|zI5_DeIuJK(
zIBeG1`>eCqQG^imMMj_6`q`d7Xm#}wmv!u0<zT})s2ZMO%L)-AbrPx^ku$pI)w{hX
ziM3zXM$ez+=8aJT0XLsMlu73{+1%J+HZ=6|>ZQ|ni5OeQ<c#iVw#EDTeAD&dVTgf2
zRW=krS7zs+%iN<iVw1Lt&7xc+Vr(6fpX2q;FyaNv8K4fLb%Hzy!U3%+m?l)rBoX75
zBGThiXxa(^ADp_3QM>>&(EY2>`VPuDjL%m<v7?WDgz9VfvJQ>fv;_#`a)PRW<2tjq
zCji)3Ux3as*e0006YbUVu=fUrolyE3R)HXz#(#xF0|;6GA6A>xSI?1nwhT0&xhnNG
z@+6+dL9xSLPLi!Q0G}e#<8Sf#gA8dfz`q}?1MJsevsh4p0{b-y>L3B_mOLM23))qQ
z5kS2LP*8y^KenMGjvI7f>2Z<C&<mCpi$}YbHxaPA4Ukod7%A$tB&AZ{wD>}ia=A`?
zu_$YYjVmQ+)RIJuRL@GpsF-C;6WRjW5WVlm?RF5o=kE~(R7}`0%RuZeZv*q#wHbz;
zavfG1G@DZ6?zWr=v3_r#jEp`7gn=O71J;28kp1&l{RRQ%0L)Z+7V`iA002ovPDHLk
FV1ihKBAx&M
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f0622a02c3320f161010a868ea1524df7bb2e796
GIT binary patch
literal 700
zc$@*e0z>_YP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10y#-UK~yM_m6P8~Q(+v&Kks(->&%?yI(kwe7c?nWv5kUA5V{Ci
zXciWB6J7RS1pN)+O%UBAB`Ad}qzi>X5p4xgq=++|HO&%r+u2#i?d{^sUpGMyJU1`z
z^S<Bj^L@TTO348vWBo<5c4ecueXb+u4gqsO8hAw_^J4#1u_Io4az=lUTzgrrInR0m
zeuf5)6N$7kJ+s7gY8k(*a7d}XyM3wUs{i`Ol|6AX){5X$PBdwq(JpWZ`)LW(Y?cZZ
z*$<0E0>z(5PLs&2I_edS(57ph@esHJpt!)vKDzJ+T8Lac0YO~@M(m#_qy4Drb54fA
ze}T;GDZnJwJp<M<hz>IIy&$~ALSJC(4J^!oX$&YpA4h_AslLk$-RJ=zJNFQ(qu}Xb
z=;odJSqchop(zL}OMMO?j;ius@TmZC1qkEz*yfa{7<)Dfm{6Iq%`#JrJ$(ei3xz3L
z?DhbJg`AAOC)^#ULAA|M8i6uMYoFULkUp@spbC@>_%@qXfHWl|j;iu`e1YHDO+vlx
zv_~}@il~dNI_u*r8vtqNy<55y%NnM+h2~?8)T)yC*E!OUzf#B>xP2}f4*P781Zomi
zbFgjQ-wDY$nm$OI4gwHhteY&RevnOl=TFfhI^0dy`J=Fwhu`@L5}9iU5=Kzh(Aq$V
zJ!d6s<ci2@jb?8N*7Lgw+s!t~SSv7sR~@7&Xph6~fl9^haq}0L#sqMeL}vBCV(cOr
i>j(OPI1uI^TlE*WJ?Uo&e~^3t0000<MNUMnLSTZynJ={f
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2825b9659f67197201c39ed1d6a2fbb376bf6da3
GIT binary patch
literal 693
zc$@*X0!safP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10y0TNK~yM_m6P2|lVKRffA70@U+<O<opVc>xu8j3lv@Rf(vHGL
zhJpp1byoBTc@jhiAvMYphj<WJf)#C{Nu-3cWNTY)mafgswLKlYx=qiz;68bHuKVM<
zuUisAZ~$T75HJY%0dG9B8*4eDyjP8Km|%3W@vF2?&ObZveDo^&BKKE!DK8rd40IA0
zaI>_SCN#N9X)BLeS6R3pY`fNWdofujhkflxd|LWrb$BjxW3lSB)B>pPMMbc_u!dXr
z`zM041fywruY)n1F2|X`2`si&Q1qaqA@rbc#(mBMc9#Pf(<)E(4xy?qIq3z<WunWc
zfFi!0St!Rr>LmL03P>h=p3ks7534IsEZk6lLE7vfOJKgr=*@lrVk-}zG7iRmMsMBO
zdz*vYTd>(7wLT~VepHqJf>{OdD}Wb+Q4?ophS1Y-pa`W|O{n4=p(hVPGC^)eBO8nW
zUP(;#e!$z~$Es@LC{4f)h;oD4dJtwPZ$kyh7vS4+L;)h?3-#8;Hb~S~RoxXNB5`7G
z60{y`=JfUBuu}ktD8Mw?%w1Yq0ZFR{q`zzud!69>yA&;5O?dh`=(^~Hs(`Hw!1TUJ
zp5t&0<8-k$|AUW@moZrMc=|i&?mLQVGigaHz(x|X$q9ndkpm9H?sEJpS&(EITc@?|
zGJ#fcBL$nun!{?|ChThm#xSYF*zDRm3`QuGv>CTDP%KOU_XtMQb#FJ~&{Y8|Km?dR
bd{zGdu&3Tdg8MhQ00000NkvXXu0mjfv!p8j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..074d1cc0167b828f2e1a8465f8ba8037e9f177f2
GIT binary patch
literal 682
zc$@*M0#*HqP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10w+mCK~yM_m6Jhh6Hyd}zn5lak_nBW#-u^5MZ{DE7fsw0A`t|s
zfl7obbf*hJ-1t+(g^Gx}P>U8UN^2;HMhbD!%%TOcu_z@dX_{2hq)sN8wBuq@n=V}R
zz}-CF_u$-fp0F&7U7C)J0K-5O2m?7F3#3SBZ#%DwfADl9xLj;LevzqNY)Ed-ojpiA
z)<^nNo{zJ?P+E1yhPvPN2j%M|wBimt9SOF!tc5!tjKGasXYlTm?FTJj%bx0blZOxH
zxP9KW>U4<HB(&l-{F+cG$>9(<y+9o-vjdjEa)VigLIFyJNfO#+VNDH=psH^;83xY~
z+Ttm|ATp2!^CyTyXiISrE+R+2Ks5v3b71I~oWL*#{NNDazQE{}7yv(Vk6?2glo+E|
zueHx+q4pVkepty5JAf#v%AVv_0isSIjI7xH>N8Bd8V3w$q;0>(EE6xEfN()=#)f4D
zAS|q@!8yVM(Wa1)JY5LI_uqwCMg>#fM7B&=Ud%dxEPr$)xeM)S4w_YHnXpO6m|#}X
zp68I1E~x7OSqG3}t&Bj>)9)p7cb>}f#tygzmHY;od-L=h@gfkgUIs|*<Qxbk=?(Gi
zeID)ES7eWb|Co>RQiY~&5*a(e@pvDU3b3}FbGu;(7Vw7x1bS&~v?wmFQCrdJ4ypvh
z`%yejD6PQn!YURW4QqEBxQ|Os;`7^a$O<$Xw#W4{82Th|b9c8pwTEBz7gy)}RAL@e
QkpKVy07*qoM6N<$g7~>3YybcN
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..40d84ea7d62ab5b6b9c7ac650566274db6745cef
GIT binary patch
literal 669
zc$@*90%HA%P)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vbs~K~yM_m6P8~Q*ju^Kj&<kejzvNoVn9(#FQ{1N#{jH7kVQ$
zFogaBuhvCD&|L`iFDS7J3cBbfO8cShMuILxNF|KM8rm+Tk+vyr>fF&C-!3NZq;=5)
z&&`+TdHFss&#Q?De_*1sALs+Zz!@L~%mQ&Db8p>J?Z7<I*$Bi?Y5>y!rJ(j0lx)~4
z!fFn-i(|kIB6BNM^F(JO8ea%n0YX90waP#N_V(!rEH6X$=P!iwMCMlX{U5{#T7j9I
zmvm+m2LTTUbVNx1*koqK3x*W{VgR0dUGMr)>b^8LG5>9i<ia}7UoE10HJY0mnEaUG
z;j<(q+X0}Z?G)NZp^fB&&pObDX`p#Dy02K6W*zpfL-h6(>l-^n?@VFuIG9Eq-Ipyi
zT?4-X(5C}olmcM*QG$`j30hD4h>!K+_tg@A(MxNykC7({hMy)XA?p=DSd;ON0`2X`
zsr6Jc>ifjKtV7&&AT__C11U;&Rp=JG-^4}R21t2<S+<H{l;Zu}uY@jL=U>Q7z2xf9
zIoK`&%zA-1tGOsAP7-XZ!8m(?(8Zpk#_10@xi_#Ukk0|c5fNm(V^lsxr2KtQCU5mf
zekm<(<d@Pid9z2#$w86nh{$-ysE8bDm|+FV4JPxi7s+Q${H<NAFU;UGvb0}o!CT0}
zTD4(EyIrRS@EcIC*z?q&mv<`}^EoK}t=n$=$5s6Xo@NFfFvU_Q00000NkvXXu0mjf
DlN~6{
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..db62c654ebac741cf436a325a5c151499bacd5ad
GIT binary patch
literal 625
zc$@)o0*?KOP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10q#jeK~yM_m6OeD6Hye!e{W3lF={Ou8-pK+n-m2XowzAPDhLt-
zl?YXEBf1cS8~+q{iiqOIpaqN47`o9&pe~x(2ttD>r6^-QDkPzkNoSJh;w5b=i1fmN
z$K{;IIq%*lq?GKaoG}9=fjAHY%0LOolQQ29Q^l4zXGB&jn@?XXwJvu?LR>h1l<C9?
z3Ln?_Q2a^2Yjb02|GSeB|7}ucWm}vxB3@5^e(>HIzjN;#qX+!zLJ9N~nvG2!KU(Jg
z#bDK^iL<24%0T>@Xf)07DELN!Hb{3!JOVNVZWAmEYSug{^Qw>wlQZc08&1by?-b_B
z8Nk7qD1iF|#4*gT(;$Kvr@laQ3BHxVv9I`mB!|PG2?$+c_F4jf@8u`Z%|al-?Dbpy
zUJ+WKU@Q#3){+_!N7va^g>-<p4~XFpsC?~3=3Zq12Ra3n*C{gh@)?LAv=)`v9{`96
zxiGm*Y$DD+9rp152kQbGHmt6cG@!(Wtw>!I!E@Dl3odv~#gRbU1}OP}JnQwl96SUF
zo~LvFjCwPhf}Vs%9U#9w=kaKoBT*1243=bIUG`nnELc}_*7~#zHLHqcfhWO3VPLxl
zbfpshwyHn|{@QKeAwfOOSXhn2AAn9rWo*>JvFCxz&fOlaUHqy)^$_KvNQDCd00000
LNkvXXu0mjfgfIsT
new file mode 100644
--- /dev/null
+++ b/im/themes/smileys/theme.js
@@ -0,0 +1,25 @@
+{
+ "smileys": [
+ {"filename": "smile.png", "textCodes": [":-)", ":)", "(-:", "(:"]},
+ {"filename": "grin.png", "textCodes": [":-D", ":D"]},
+ {"filename": "wink.png", "textCodes": [";-)", ";)"]},
+ {"filename": "cry.png", "textCodes": [":'("]},
+ {"filename": "shocked.png", "textCodes": [":-o", ":-O", ":o", ":O", "=-o", "=-O"]},
+ {"filename": "confused.png", "textCodes": [":-S", ":S", ":-s", ":s"]},
+ {"filename": "slant.png", "textCodes": [":-/"]},
+ {"filename": "slant2.png", "textCodes": [":-\\"], "hidden": true},
+ {"filename": "angry.png", "textCodes": ["x-(", ">:("]},
+ {"filename": "sad.png", "textCodes": [":-(", ":(", ")-:", "):"]},
+ {"filename": "cool.png", "textCodes": ["B-)", "8-)"]},
+ {"filename": "tongue.png", "textCodes": [":-P", ":P", ":-p", ":p"]},
+ {"filename": "embarrassed.png", "textCodes": [":-]", ":]"]},
+ {"filename": "heart.png", "textCodes": ["<3"]},
+ {"filename": "straight_face.png", "textCodes": [":-|"]},
+ {"filename": "manga_smile.png", "textCodes": ["^^"]},
+ {"filename": "manga_embarrassed.png", "textCodes": ["^^'"]},
+ {"filename": "manga_tired.png", "textCodes": ["-_-"]},
+ {"filename": "manga_annoyed.png", "textCodes": ["-_-'", "--'"]},
+ {"filename": "manga_stunned.png", "textCodes": ["o_o", "O_O"]},
+ {"filename": "sp_laugh.png", "textCodes": ["XD", "xD"]}
+ ]
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..225b661df76c22499c28e1bea8091ca90be29708
GIT binary patch
literal 670
zc$@*A0%84$P)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10vkz0K~yM_m6P8~Q(+j#KWFa8*~yvBxwWzggC><-xOF2ejD%PN
zV}S+U)kQSA>8AgqyCS0Qk`fw)b9hsWp<TE`5Co1WZ6v3;O?1<<v!ADnvvkr$_=V@@
z<@vn4-{<?hg0AcAQ`|oRgn$6x12RAwND!9ab+!t-aNO@%&DEa2Tr6L!TI^iDbeyr^
zNs=G4d`PWfYgCvTb<CaeSnm*)b9->y?`gF3FOS}9?z{Id(sS5qT&M#rqe@#fo<3RP
z!MM0?HVGF9%elYs8@%2KC%j<p0V<%^J75dwcBq#?Q6R6x2+KDFeRgC5NqWm!9~>G*
zUOoqC_=l2E{{_MT^0zS%MErwap|l9!GoY#0%|M8L7nlUFUuE)U5P%<<XV9DmTad|H
zx7%kaD1U-p7yQnKOh5oh;y|)X00A@L!)i19Rpyy_Jq>73O&Wf+6f>`0fFMG7-hiz(
z0H2`Gjx6CD3eYV<7ylnv6WCE<bvbPU((I_vg7TV*BCkNBZZz#y9p&>1WkqejPz6Yv
zfds|EJ)C_w+!CAFGII|X5G_`^MUn08Dq6n6@RidzB7M-*VXFX;*vr}Njd0Wpf?;bT
zR-}+9;2Idjxv9dG1j81{D^N6YHnry$C9kZbDA3TM3C?jRXO4JrHrg%6Oa{22tOL=1
zb{lw%C`IUX8FBpVf`uBKuR(tvG&Kf9_wRP64)Ck~0QWcXUDTJU3;+NC07*qoM6N<$
Eg2tsL5dZ)H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..556c2a5c72849e90fe4c34d4163174c08e72af06
GIT binary patch
literal 680
zc$@*K0$2TsP)<h;3K|Lk000e1NJLTq000jF000jN1^@s6JJyv-00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10wqaAK~yM_m6J_t6F~rmpPf#3(~Z#-l1;WYMS5tUU=JqrpeQ|f
zDS=7_5j+(1BHldo2YA&#kRpoWtq2yy8oX#FphB~VqJ>Z`SR-lDv^0(RYLi_LTeY!X
zeBos-^UOOR?<kJr(4qO*1TYT7fhdp#GC+!i^<@84<u^PZ3js-VeUe}RbRATUg;%S*
zOn*mf)wy)i_v~0my+Xn&{DJ3VArw9kHVux3K`8Em4q&_9F7I%AW|8Y>Jw+*$5fWBG
z?Cl^)*ffZkAQkB1FL!geH^B7tDP*Y60FrL<(-RZu`eTNpE+}x#UaHcMwLAujhuGjJ
z*nSOPve2lVlfXE^04>{L>goc^D`lcXe(uklK?(udX)av648Te@4V5?G55U^$xCG+p
zI#LR5-58}m;$`Jq1t|rz`L}v>fVc#rs2VuXZ+gLo!HCZVZJ?3n;p{z7JWzS=!m0)k
zl|Yt8Gmg|@?~-x$jdqUMz$`dD)K-h^R$CnL3xKQuGE{5WyEb3bc{lNZcX4*gyuJGo
zpW%gi4Im?c6dNT33aw_F#XC#1s_hOq|GvbFn--B+7$Jai2_W^WB#$u6Nx~+d7jk4C
zETMY4@kb7^mHR<$v&rbxFhgSlu%3sF{2U4Ed}qS~rhyTr)wIdID^TCsLGRV*J07H4
z>w@()*vuDk7$IR54tCq4PvQ@_&!KA2Y`SMGm!MIb1Fm&;d%ynUSN#M)^WGeH+@0(I
O0000<MNUMnLSTZ2t0%7j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e456f4ae56ffd595f78cf8534aa077f5ea9ce99c
GIT binary patch
literal 23314
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
KP2bHz=zjpRe97Vf
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ec06433ef4f8fc51df31c0bd3dcd7971edb22289
GIT binary patch
literal 192412
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/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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..69af2462d0956142e0e164c22aad30c32b4bcc70
GIT binary patch
literal 155888
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	(K9LUwLl80DHq1Qv`2*^H>0-5kqg2gN_K
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..dce135e0f08c344944ab7f4e0feda137a035b4ed
GIT binary patch
literal 55008
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
U$%a|g%9X48Rj%b%r8d$30f7{n*8l(j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c77beb7f8f9ee3123fb8b6bb8c428a02db319702
GIT binary patch
literal 57440
zc$_?!RhZOR8?B?|?$rVfH16*1?#?hcgG1x)Hn_XHySu~uxYN)sCDBS*Jg3gNIQgDD
zJ6E~b?_O)K)vIH>b^~$&pnuDLZO2TSk!Aq^00bbQbUy%CGXMk-zygdKK4bXX9N_;y
zs>HYx(<Ct~6Jr1kV1KAT)E;e*-qGIC&Nt6D6HdZ;EcsaS<h03Yhszu*^C10sI#UKp
zA6aU3sZ*(;)K=ai?>9$l*L%wh`$FSwt6p!iPS+Z(do^pU-85xwe`!|RHfvVd9%vBT
z3ys>kK(o$#Og+a4sBY=z!mZVApgN3-XXSt66vs0iqE|>LBn5{M$^O;B>cxlrZHtcj
zx);sxRW8o+o%LPw?+@G!WMkREnPfwJa)=@xMs#!&b}n;H&_|!hi{s6}O`IJ@g@2G|
zLId=PuoHC%8&HfBkyWf4sT41U46$io`{++4CsIj%8d)g5irnE(M9#DEaHZIErhFKr
z?@;$}JC6Am`RT%DMOE`Q=CfJbbJzX;D+kET&hGWAIJ?uY`Z=e5ZOti_`8a1`=JA|8
znbmT}W{%H}{F;$9;McT2H-4`DUHxZ%X8w;|nR!3%WY+!J<9F82zJEUbx|Jnnj>+l%
zXJFpltepkbbJ`W3%3TpCnO~LIS5Q8bUX&VrRs4%R?LQ)x!_EQM$hzpZaBtmf&S!Rj
z*PN-^0m*BubJ8Ap@1)l+m05mX`MVX>Rr*%?Rqbv?V+~`4qUtNkey;XU=_XaxC0ABH
zlgw0H?m1Iouk&#ESGFVNewas;y=b^urki$asUN7W<U*)x%3Ni)R~E~-s|s$XgI{Am
z$Bnmr=5|>}@xLrJgt%ERzBPRl+ZmTj6ZLj^pmv^IUcE=oLh8#Cp-R$IWw7vD{J=io
zE=HHcYBQa~7s(FvMC>y0%zp)geG`LYi<toAs}_9Vj|4|x7W@#|o=9b;lG~yysVw$5
zT_6NP>*S%~hd?Yc2HF~%3ai;qa3yXXoXK5)P`)>KoZGKFU{6XT<7<S+(P11I=@9S7
z436f}7sJ=7uFPk$TBsCRnjTIB$qx7s;#6=vHpO2iaJT46@q_#hg|~A`=7;_a%RQV~
zF~|RNarUnteX_^?SeiZUM^^T;AI)<r|J;<b{O8-8Yd@X2_kV86J@>O?-kP8N^2h(Y
zT`=kAu%e?soBBMzY6m|3Dvy20L<z&6`{dfJu5{0w$D!$YWx_<klE}^C-_hHFdhwt5
zR+gn0P8FUhq{RM_mU9MRxwHyy3Vl?cQQtCbGGf-<cAfig?~UXYCH9rPS9($D&t;pY
zUoHPJeQbr6=_M-MC|$1nKWU%K9!Z^?ekQ4QnMdvprOnPurPkY8l(JZEr_D1Kl)R%m
zRN{x4NTCp4Qf276=f1MW^<3KQ7$oAhRl-?o3*m`nl3=n>!YK10ai?jpw8p5Bs~Yym
z8+Cf+fu^(aTGc=~g`AbULo206%2R<8r*c;QMl3!4GTbYYPd^X!BM(!PaXmQ-OCx$>
z*?1kiHh~cw(TWDBIFn3&iPjEXVY@T4gcV`6{3p^5=n+eX-o+=uwYbX25WX8yS;&Id
z3m7y@*a(t*jsoy8=_yMK{o)vx7ge*1BZFd{!?8#YCM&!q6lFfqS|&^d=zHW`%0yfz
z=-_2+fqzRNzi7E{V8M+dM_#+aCOMr7u&l@V6|y$w=l$7{AN_MLzj0P!{`xGa;BA(>
zAehy-peSoY!HcYNg?qC+Mf0;p7SG9&d`GfA1i<Vk*rDuu#JrqC)Y{y!p|^SFaJPcJ
z5l@jmR^9h^d}Ck_TL!<wWs@)Ylc68N+(;#9X&h2Geha8o3XvOdo~BUK!`RQ{w?44<
zay|33OiE3inYu0QQAu?fxYU&Nrlqpem!z#u=SrL|^Cx9R=?O{wOXaz{rA=}!DVc6B
zC=s&sC~?EICv~7<Ps&eiyW|$?)830nrn@bqI4c9q9E;@Zw$9Q_>uzziWw7|$yjbjI
z4v5c8^ChjxBb$w9<PZANN)O!v<$&g(az`~r*@rxoTSHr=>q@a8ito9){P_6%I2EBH
z2be3&4LXmWNbRJG$zrlH^`5Lu*QcI`Wa>>=q)jm!Gn=g&ruZq5q0+19X{CPr6nKek
z348b<NH4*Mv=H-<_hJu(7Tdt5#ZMq0ngD}PLeA$(iU--+{NVU(wpt8`SB(CMc8!pc
z4dGIeCrp#@y--PJD1DngOq!^TczvQ{upcJ+wgf&FY5i2e&*JI%O3{S8IYnP{YZe{I
zwHBSp)g->rA}CKOERiP_md<k)nezr01#|JDC%NB>Pv*M)r*h8(zU0ors^^U+?&l4o
z7UlN|O)RJ%UR|g}z7?H_jq;_j4FZ$6ZrED>05M;%(>=u#Ohai*bg{gI9R#F`L8voO
zNhKi>twv`yRWaAJm2lWyyFJsqLsDERZA$)5ZBpt|iB6^WmRME#W@=jLnkn5&wMgom
z=JvEI8E_6P@!7sN^}98il4Wj_^2s<Z`Ix?YQeQ3WVO3MzCy-Chg-|`mA>gsCw6ff4
zlh<0NO5e<Nq(0^@QnBfX^pD9aKQ!)_zZl%gN&O<FiSDtoNApy<rJA5@N6yH#pxM$v
zB}>3XnybfukME1Wj5dj~;hNzC%<j;S&`SDx2%)Pp2D(moHGMqNH}qGmAJd+l5gx!_
zimVW|v8#!@?<oLsTcP<pgnSZM#3znIPf2Z2SU!lb(tLP>#DE{fGQfACrhJ=kE^g!|
z^OM;h?CAKq_@da_*!AemC=m%nkO&vfWWF$ehbDz~Qs1fVL^?San~hHlkiiYUBLSgk
zum4Tq51&}j%eSsTEFM$vvUpO#@!~ZF>x&N-%q>1zFr|1?!J^`^1rLhr6twa|1u6c5
z{4Rmq{I@}*U;{p&U>=!Uu$bOnxQ>}pv_6tiJT-R2SAkUr&Twag7{4ATg=6GHF+eYn
zMusQIwPPQY#oTAGzqACo0lrW#P-W<6>N}bLw&?5;$8?wAY42^FG9>wGiM=T;(xenQ
zZC{G9)b`{(X^x~XB|CWnB}Te{63ZObQm@*kr{I=5$tmXIq?*PeZ#n%HkD}?}{;2xq
zyn^&|Jb*}>3A}8*tz57?mN9c>d4!piATuYOGc}T%nfA#?j2h*IVX|^s|3K-e%TkVO
zZYwub4V8t+AXx>aN~4s`!X@zwr{eAGs`$cK*J%CdwD9nVno&nehpI(h(61vt`f+q>
zNQt#&rm$VYdVXHyi|{G>K<XU7qGYlg!SQ@uIA2(bl$QpfY4R2Hp}YW%$`6s(@@lx1
z%z!hblE7@St~^rcFLvgS@y)p!Tz6K@&W$I>uf{sX{zNmPKO!?CTf(iwFq0i>NcW>V
zlh4V4cne}lFb~W2-w3YpJr4X^3<rveX8Si5+5J<BKKL?<j`$WPymo2Pbl=RPnZEu-
zTYVLavV76P3I3Ob?E+^Drv=Xy`moQ12Z%C7E2#ZN8$vCMkA=0q^U<hpM_e1|%=HXD
z<v(GJuz|=H7gGnM)1eV^dSs^Jifh2Fd}DaOtWkO4?%F){Z^K=~RLgMdC;NWqLsxyT
z-fKzOo#ZMpB)MD3(aG;izDase@`ATz$wr>lCHA<krV@^vln!=p%4ut#WW~HNsg-Gk
zcY<MrXRglco~gO*oUZEOSck-IpP=W~0pJr$4L~ptRi>D;WQ+Nv{LXY<US;|tmo$}E
zRvYIjmklqJU3x;PlVG@1vs782`XpCH-b=^8<ziem3a!O0+)1tu+cNHqSB`dz%?taZ
z&6wio@=)tohY%547Wx|ZGJZDBr1O@@MqzNYy!1U*EN8HnffRl$bXV}h)g=o$LVkfZ
zQ=;fiWe@sFxrNMDM#A6ZhhSVHm6&Lg140imkAKVuxfz_Eo4~eaH^=A1AH_DuvZB+X
zpCiu5-tYpZA#;;{ME@aMQ##@YF$7zS`vYUJNB)eU&vz*>)aMPjedqmB@hCr6T;I<Z
zm-2^-OZtBm*YaN~9_F7@e8=CSxLd$nTrn6b>W<MxPjGwj9CCQ^82VfBEM}^2bEK+&
zUrZlZ%vypK`BvCQ;Vgbe>_{$?O47~b=8RW)9q9`Eh-;yl!VqMSQdgaZOws+({4j1Y
z*0931<_^*M&eg+v+f$T`doQL=NV-*`O;U2nZC<&=0?*14W!yhf&pNHC<sI!)4%=oW
z8?8H&{xR?Ko-@w#eAhR0Q`$TytXb+PtEy@rgRs_2h_Y-3OIS7lE6l%?66T3Yj;V=q
z$<$n#ZW^sPOox?4#$4r`!31p4JAicEZ)LcqkJ3@KL=M8^q&{E;@sym+i^3UhI(LGt
z7%z&~j!uuC2=|V!V;05n5FURS+QjOa!Q3gP6Tc}uO1K}nCYFoUk)Or?D2up_U=yJV
zoF{HZddR!bsY+Q@HK3wu1#ldl2^>b$Kts5vvI!h3zfwj^pgde0B90LVekuQeyTm<Z
z3)!4F!tyaOrbHh`b0X~%439ERnSA;yU6PtYWe`bZ7|X}620vkU1HqsnP$PKMe<U#8
z-#F0QAM<zefATl;zwnpyfAGsb(*MR+F0kIWBGBFE4yO2mL8VxW%f+*ZG+$+Etj`tt
z=1UKc@i&Zm0!`xnfQ!ovUgud%FLoeOq_-p|ZKuD;519gGT(lo}itP%|6yKnCfGe7A
z=x@EOwV5}XQf#kmPaShzIj*JNzdZj-uI25WI?h|Agws2%L@!VK60O}IQxR9C)XR=(
zDShnclY`dpNs}x^-tVSQo^r;6?h*QKu5DVz@j|`Vu2uE7WgtzgM!2`75Ikm9fQsh9
zK#nP{Tr<5<HkqC)gH3-F$b<mXja7l;hNi$OeKKIy-BOxr^omPWN<Ix6B^^izL*zgF
z9f9VWa*a7O{*tW_-O64M?`N+uxojn-J7;5Zx#7$vUKJiLh~bf9v*=#wX$(<jvs;0-
zd?m;%o`Y{l1d^(JM5_V~Reyj~RVi>O3V_p*6@UqTreuIW<R{8E$s>OiH;dUqV?pFS
zd^z65wdYE*UD?!l`8X2$5d9G87+DfN&Xi^t`Z3*!8bv)LQpia-gZIU7Y<bX%F@X`m
zy@Bk&guwDZ??9J8%Rrq##X$W48t57L>R%k#<$oUN>#rDe`kw^zeS5GMz6baVUnSD#
z`%P8#KML*kKMbb_o<u(cF2#2Tr*lg&ncs|e5I+$8r4CdV*&Q0F{2e|I)QgRWj&X;P
zJyIKW6l|#5sOn*?tnX#nW;WS(*#|f^Zm0W$x1r}x@(WMR)aRbU)NUSkiN$VT>I~Pc
z)OOC_DTt$N$^~1`<d)W<N%zeiy(uP>XM*95>yoaIGp=FmUDU^HkI*^RLC7LY1^Ax1
z8dS?X1^i?30~bwOft{v*fW@Z2fS!p}FwO%e8J7S%4I_Ym^jaWOJ5?do`{j%1QK<&J
zPy81+EaXTp`SwCGpU0lzUc{zy>gW{iTKFLMk%@4BG2{5YOq9RK91uo^CyG-elcW#P
zBl5I31hnLqfTaWp3W@!Y?eb`pQcNlwXr)>K^5|u-IXV|CgW$jus1#5Stfd@M>c}p+
zfpl5yEY1)n3WNFed~a?q*O^_#){3`JFwBfTj&zNT3!i0Fj3#u9o=<h6?4+8^#S3r@
z^JDceFZLifCpbNb1Um%p2C4;j2He3dfq39l;9cNrU`N0a>>c<gXbxlt-}_f$`~Bnb
z#r|!?Lcc=p_n)A1{4<$0fq{`XfhMtuK^<EOyUgkEGJ=H|Dz+o1OHZgZ^3l*6MH3kS
z0`YF}zx*Y1vph<JLtXV5>Lw;kuUOJ8Q|z>Tyt9Hk$92d1+Pycqg6Ct3$&-<~$$c>O
zrE6O1|D2kH24|)$us=$!YRgZ0V#)S4FkkiTG>&om^@yv!ZogxbrkPz<@z%{~fu$P)
zSen88%p;*f(?js6sS~)u1cEb6nZR(<TcED#1CVX}2y`>v111|50Cn^Tuvgn(IiX%6
z4@Y-M`OtZ>4e(PqCRGqpgp>RmwlDuIR+sliTk=1`(|IWTjNijl5_U3Yg(%ZSyctfF
zzD3gHPO$+Bz+MM(xOC{1um;{O-AC#wN73a#x@tODUnPP+(Im)@{seirEqDT&15^dq
zE0>k+a!dK3gp1e2>%tph1OJI1&pqavvujy2UNL?*dL}wNVvR`5EM`}zh;Bg7pa`-i
zd7nrpF5!Lf_t-<sgAKtp2TNkLgIrJvWCiiSqhKtsE9ec540aEu2X_av0&H+cU>?>x
zP#G^3a1v;sF^LBDQDp*ELL&pY%!|OuNc-UUSWz&UJ%pX*X5wZcgXkrmCO1h9XrJ7Y
znFsue42M+g3FN-eK%K1sx|T?$;f`jX*=9_!rC6IfE;)S8^KO$HPP*p4oSf}`oO0OR
zCDq`boZ8scDz$|(C#8&|V@i>2S@K%z#w3enl6Rgd-Sge>&{ad<#kocM$F9{ZvmI7-
zw+=%)Te>1k%;RCobQ{`kstJuTeF6KJc7R<?Q^Dq@A)w3D1$<<z0+u!6Kz+j!AfPK&
z8fnWZwbk9^d?Z5}1|1V$E2L0I8YVp9C4M#gg5MXr%^Rbi_=2!bC>0(oykedSADGT!
zvoJ3@BAHUhC?S7|RRs31i@+uPH)xz_N9xFK^o8<26amvz1)xPW1lo^Ifj%H*p?mOV
za5nS;aD%zZ4TX}2$%>RBStP&U6>swfVL6w}wPH83Osr&lOLRxHOhgV}W+pK$Lo}UB
z?WT5<Q^^cs5it{gg`dLO;Tnv>b_MTXy@NZjI>9+u{a|0LZ?F>fZ!jGE8oUy$g^drM
z#YzWT;ROMNxEhEO38hlo17qo{fvgY}m=f+1G)7+s&%}mf^;idfiYvk;zJO>amZOeH
zALz;o&%}XiQ3uSk3(@;xNzE@HS62x=U|gcDWjSYDVq0pR;K+3pCK%?setG|K|C7AL
zJvODj8&5gvvZa1=5-EQi8&dAsqscRE>B)L)TGBEz?kO;CbvHJYaqZTfcWAUN>^sz?
zwS(%lr6T&n+z?4K&xMbfil70e*-%|mWvHTw2h&ZzLA&WWSZq82t~O2ua}9|-)b9aS
z=s4w_rit=IHBFw5oRE0XFJ>rhMMius?BK@>)7kpMp;#rMY_yqRh)fmwgzpOqQ(m-(
z?}}T(3#8eRsq&-f7NvjuBT$x0f{emII3!L-uE@R6T0kK>5=>Fmf#T>9XdZeFx`+&g
zPQY)$X^;ji3swfcD{YkZa$mWfG(=K_ZsK*mv@nGG&av@v?5bFPOc(7I{Wp9&Y-VaR
z$LP0o4{8fll3Y!?h#N#BJc-zVUBFG)82nzaKE65Vz*h$uY+vv#_A<B+(_nvNBd`?g
zGxjAo5MLh@@NU6JM2X;O5)Iy_kRU;q3btT|2G56Y2h*c9umiDYn32uEr*N%^4}52`
zg?OI&EiDOMRsMwEfzM-=k!t({6(Ud3mWIk1hO3^Lw&^NcH=CN<tJ^3?A7^z}z|FgS
z-hS@B$=%$|Q$nu$DcxLoDRZ2UQ>Howr!=<TNY1f-P8w#p<$YtC>?vbJ+>7*UodK=I
zF-3FQmZ~0UjiX&H06Hnb@U`gxJkV4TPBMLmWa9xSYMcp$j02z?V?F4s5rLW*Z-L7U
zUBGGjCjg>L0h(z>C{<Jk<Xrf-lmV8NBzd*CL)3|V_{&0fcAl^^HcqG;og-9_oEBDx
z<3g+ORB=q$E5*W5iHyi{>sWapFFpdi!X1FN3Xc=X_AcU8=Af&AAbJYasU|?*(RWa9
z^fUA?vKra|3*b1YHCPjz1~AH2<&u0%9xWY`?BXKvD&ItC&Hd({#fPx<VsB$7B6Xv#
z@X7G@P<5svok{1CSE+}@Bl3SZKx*(=#4OB7*s!m7X7CjLGPnZ&5*&ex!A5v9OpEWr
z-eVek9ku~)i<Kon>=W@axRcxyoJB1QPN$az*M|-UA2L6JaHJa6Cwc@s8>@~>@l3oY
zcZs;o|Bq}ZcBFN33&sfCjdX|Z#$O}Vg|TWtap|=1eM5P53v&(qN~>s^V;^r*JO6f8
zalK9G@S?Z6Tbo?cjVC{FO-S*&cBC|N&PploFs9_&{!Y%YW+dgAJ9(R!SobEw8W*lJ
zIEQI>+GFavw!13PauE%izagc}m65fk^Ke;HPZ&4a;7>+B^vd`@=%Mivbj<iKG|bow
zDlkBh$FLJ*bp~*$b^>rmeN#D)#^i}`UD*sSmM+QJ;xKWb*np1+UD<2G+1M^&P;|dA
zEb>Zt7A_&K51$erhDS?7BfaI3(Xq<o*mhtz`v$DUM<Gyzk=IfYGDg{eJ_AVfGYG5J
zLjR$KP$x71twWANd*IU0a%dLV54;Q{0bi64@^5*H^g@z_4dQ&hrclV<=32%pvU{SN
zW6>}d`J2fI=h0eb74?ShL*Ax(62HmCcx^HVyG=~SMi3RT@`M2saWnQ4uZdm7Cu6Je
zXIO8%2JXQx<KMC7#8&J#(HmPqreIAeCa9&egBYC`%nQjuim8v8BkQncQ68HUTZuo6
z*Co=pRPsDOh?*=Sp(%33L>_$?O@o8%eRQfgQPUhq*4IO>8S7}0Efzy_+iA1Tkz<?g
zJnEe8DsXGuN4<^R{v?O{Y4Q<Qvy`CopOlEBWy*8=|B^@8jLDf6Q&K(iPtQu@Jok@8
zmT96}>v*b3vS+AYTKlN>S;nJB%-4}DQ)Q%w>3?v<xDI|`904COwuiSHYs1To$?!m9
z9D<Dxpecs&&_=xg4$(~ke`#I=2DK4@(RRv5XuiA#xGS}m4U$!yD{6U-*o3_++=y)#
z=0$f2J0foqep*xXhd+unA}6Gr$Z?sBK2^HMX&}g!fKKsE;R#|BBvm$`#}au410rY;
z1XSCgXQ&@)i;@W)UWAUqjiFu8L2w$F3)BKo;J2(*#!1Cews1gf!q*novKP6xF*j?8
z&W{Zb`y+2c6T&@d6N6HJXdm&15^*Ed9-m4+!{h|R^F&*0I?)1aPyB_ICiWy)QrJg)
z2z~(ngO9?;6XkJ`^kWCf3s@^^9!66Au#<FKY;ve0)}9%I)d?TK>P0B5U34%$F6P6}
z#t##A?htvM7pSe`^Uy_E6@kG=u{E%dtEw6+WogQQEA=vBHhtBMwk$Qwuwmw^j;L*g
zbF*`n>zW&M5A#-Y?@NN+Gm_W4nB@PQ$tf=#q2yKe*~vEBwWPV0OWxO}Ssts=>mIH@
z<@}$vrel!iKU<P|iPfwcW@&^@HSa-gn9`9drXLCYoq~56H^8%ui{W9$*>DTvcvxlZ
z4j(X-fMfbEkV-!e`kyuzY^P}mE>z72mLeCF;ZUYr12D*l++8At3nIu@7CW;agrBhk
z!iDHQ;YZ|?@OPw@*d;=UM<TDKLD6^eq!^|A7x#igxK@x>7y#cDyCQvMC;D1Bfl5FW
z#X(55A)&+EgqH@P<H!x@CEN{q0^J99fiTz!D3f5AtaOz8(jH-x_=R%`AiIjI5(~yh
zMta09G0!3?p<dzZ6v8Yb3+eepn7V}5rjqa@<aMkLxezNRCSm7@71$!;9@dvI;gyMb
zxQxf}xA+obJ8mZj;it(oyeSpLzEF>_@$_L#7uts14DG`*n7deuFoTtew8l$BFX4@2
z?TA%zH>u+qQXlvS^f&PmlcYGJ+d*Hv4&oJpsvYuCZF8udfk&U4PHHvQbR%dVVmacd
zXU}z>a^7>Db=P#a@OE}*B$?f9l9#w1Bp-MFNnYYOkzC52n!L^0HL1|t+*{5Bdd3@$
zxgP22JL_uS+JCAuY?oB^t&h-h7B$+&ybRfDs+c$>5%{|CH$2Dq1MY6jfh!sPaNOXB
zj~l+hr3|OwVfq2^5M2>u({_hes`r48(bvES*snYTA?2b{T0SiGmd*-?#VpPuwq?%=
zcx;aFJGxj%i#`<|M_P+7B9d4+>XYbbTt?%mz+ko$n8QtjW(&(;lQa$4EZ0K)%6(J?
zs#S%cRW%RFL|;Q=&>zq}<UEuM_keyvufSuV4QvHe2X4!y6iq^hjf9orKu#r0i%;h^
zMSsN~hg-+Y%;U&vdO)}a<z~zz6e>rg&@=Io6pwu;FJlwPomet?49g~dU>Ar=_)=mA
z-k-1&6^Vlci&rO~<4?$qcu#5&{+p_d52sPQm?p3(p+XF1XzT=I!H0x9;uRzNaCg*9
z)QsIAR>TjHE-srQ_@yC@v?=_TqKOrNh3p2zF1AxIRs^jH-eWkSGMFpqT3hECtJ+su
zo;VuWBhGcs=dL;KdTz+u$z3H$<rb1AxuzyBcdkqB<>-}MY<rW`)yjHzm<i8U<2AS2
zFw`|w$2&;PF8e-p2iqc*$GQ(SStz8Yc{Z}#R0)xdAacOSCcIOHq#M%^($EMwX=sl$
zGc-d^=-tRy-COv%b^tt6^8mtCAXEb_2X==W0RzAe$`ECcJWg6DZ4&N_f4Gw3K=z8@
ziq8>}Vhe<f=wqQ=w58ZEDv4(k45!9o^0Igm@Q!T@Hsi-bPldT~D`_lpUapYn_BT)w
zKvnNRmue{FM=wAN(WlTK<Ol>KU7<*V;YH8_)&(j6n`Eo<So|P;=f{d!Y%yOL>&<bI
zhw%#Gnz2Qp+Yy)^8h%JtWUdowp#r=$-38y0P?d_hkL@GxV;#t1Oik9pKM{NI!-SK_
zNbqYzR3q)gV=@o#l2Gj@YAN209)Lfi8{&0C<?u71GI)8WHh!JyhxZL{!5xtRE=ML2
zC1O>`#qqjSd2ToD68>U3N~<Hc6i2)V#Bv(6l=MbDA6Tp-VXtwxdb#<I?xHo@xX%8_
zVs>`5*KsX%@~#2yzujLwquo)j$$ckjh^ut+KxeIFvx7`pZ~H4L*RsZ&YF^~&XYA<S
zrx%@)_LO6droX+d+GA^?Vl9(U(fk9cWX?dAm>MIZu?n)w*c|C#9D{(y9msXV1EiPX
z3-V6?7D>_{LTc$cA~x+y_?|imuBGY(EkOo@m!ToRN1(q#%LC+OX`=LZLWloxyfB(w
zBQ%fq6o$tJ3E!iqgrm{g;>&1UY!$;KT^vxHY(=0KHvqiIFM>ScMtGq#4|yv$L1W4*
zlmI-cOJHSH14uzvLA%kzPy|^8*^v5B2)Yh#2Soq`Y(R6Fm-~x1r2%|*u?PE+?;dN-
zjf~ug?`CSpIQm6oGc_|jl<dNcCpv|$;2Csn{24`H^{C(2D>9BvCL7`9$pbi%;CG8S
zK&(pe>qk5!%MqO^7XLu~hqtGX;@9cLxHmKwpA#B{XNLa5+cDGd$INcLclZ~si!>vc
z$Tz|hyF{*xf2SI8eM1d|+Tr=qlxReO*&R>;-xCF7o2E7RT(=YHZ!A#XG28W-R=eqf
z{k^54vzfhvYp_$}PIr%S??^Db=tbO<lRCM+BsF#BCk5??l7`zXNmnhcyp*Yhr=rp2
zp05Au%+#)NOw_cp*HoKr)m2f;Kd55<iBvN$LYA5OA*^u_vevi=sbai=d^XU?6hkRA
zrf-Z6*4III=wS4)_7pN#lZup5{{tUF*F!A44QvGc3rqv%D`({CG9fOMItwSocN`}y
zWtR%m<L!j=v2H@`L_RggN{h{7MdE|l4{3QEmshZM;4;?|<oK~rS8)!!Pa1=Kl`Ema
zgqMB>?5cHOHI)_8sYXDj(8Umlj)k0v7b=2wfHT0~!2c9d2}@sPPS`AATov(m{3`!F
zT8$&Z=i?Qby0M+~*GOY(OE`s`#xy2ohj!s7=o)y80`W1F3XhNt@a^OVyge!5D7lpQ
zk1&%viNoY5qAFE~xJs#ss&p2<m%fAZ^nScYXf1v;v<#1i*5SRF<M>176W%VIO7P(w
zL~*1Y>54U_w!~M^{kb&eAHfy5D~*UX2Lu*}eh3%PB6*6&1eMgcLeCo~XjGON`czvN
zlh0mc8SHFm&u}$&R&>W*3*Cb}liXvxg3FUs)ipiI?3|Z$!Co`TV>{*@VfpFVZ_0LO
z8lJi;>9;udYX><RX)4%_YLzWXC0RzGHcK(m!F&ukVA_tDOqY>uMt{ObtD;v7Q_<Rn
z<LCkXUDT&LgKBjXQBVt@@6{ub4Ank3j9i8W!l%It;1+;aW+`3d5%PI)gj8NwF23SE
z347TA!nt^w0L7~a$72hH9WkT$G4@mJ9sejf*?_F&oIn}AE!bC>2yGM>!jGj%NRC_+
z%~qbFH-J>taIm2&7j&v>K<ChI5S!4T2nWI2(C9=zJO|8Do+#_3GxADdoHUIyihsoq
z@I#{M+`RC`_|s6ESW}vagvsk+AF-cFCQgMm;@|1!csgAH-%Pc}UDRs)3K_%)C#cy-
zg7{3#C-)FqYBaHts!Ql-9WjS4!hg{(@G7AT_{`8@{7&Kpm<xC}<{f^SL5SMn;e<a-
z5x*n%NN4OFwJ%;ZG=<A$)(b_EVyQuVI`D}r4IdQ?(S6D>%~`0s{xSN^_)1gWazS6;
zHrgcE3oPTEY4!y!kF$pRscVrt*)!H%(o4DCc~f0wlSD_=q&@b47qt!d_OcxDY&BhT
ze@o<<%KAmlW7=Mh_L|D}l4_f+w#sZ>ftI&8&>`kr<h&^tahO!-dSg3OYutn`GkivI
zJ*aA-x2k6A;^;c<Wpu8l5!y<<9r2^j;AzMQs1SMrb_9<B=al7&O&%w&6^BbH!b0&I
z_gZ+&b`b(`o6skoDyZX=5-cU5Rs4ncB7RR=%zl!`a)L6AFAr`Mx<OaPq3}nkJMvq0
zp>LFP=ypJ-Y6w<T-2f344DCQmK$!>%eTHv<i=k>D4onBiD*q~Vq?vLBp|ND+`~n<b
z&TFF{u15G$e0ivM%t-5^pUFSrAH-WGmB<Pm$BhX`97GSppC<UVq`u<c$fm>`@*Yuv
zY)$49@5tjsA8I1;nQBb5r7gr+8pDCmN4!($KE5_|9e*CWgUg|}cuOXXA7UC3rNd{5
ztZ+{<Gt!7E6&pw2iWi3Va2LXf>=vycd)d3dC4Le-L#n1400cB$;f?y%Dub!Kwyy=#
z|7BZl@;ZtvOPzZAdKcxW=U(la=l<j#;C|`(?i%OioOivS91pz{><hf#t)i!#rJZM@
zX^i`}VVujWALKlsZRO~yscx^ME@vB{s%d?I_DX1Rt+@sI-P9eeZCZlvHa<rcgF*F|
zp}p$7euAo4H$jEyTB%@d04-1tM~|z{BOTHA@DKPs)DOA^z6CY|ZIpkMXHq-4uh>w6
zg+AhM?vPN-mKQ3s41XmK3v=TGg{5&qcpbkhc4V(gBKx2Gl?yBX<I})TLR;vM*ayy+
z+92O$J$h9+j7|XrR0q0MOTZxd2AqoKfv1p{;8u7BSR0~%T|fiijoe51Dz=y3@E++l
z`%$<Yo5w$jq;O&8NxW}pT8yOXL|>4mNEQKy>k`g{dRm7L;_K;SI7NL<_-Q&plbeZk
zq@JupZY2GLjXFVWrX~<5-GG=(n~2v5hOW?OynpB!z9IAozaM&o6QM%9GUFmvF_Q>G
zm?7SWuaI9Om#DI_F#SBfm^sh&iu@KP##+hG*snl0VL6P*%~fB3u;voHS-)1LHucbU
zw($Dyws|Iv<3Gz}XRd9Y>!zc$yR~bydxg8Tdxqz!%kB+2$9i8mrh3QO>v^-Rk3ID*
z9?vRMd-rcce^(oQALj>cC&${veK=p;+IC*m$C{#=ZTTO1!F&Y`o1UO;O(ArjvAT*h
zOj0#898}HJUsvtdom8FGPE{S!=v8yn^U(UL2S^T*3D1OoKni#tTn=mj49Y0wpwwJ$
zE!L8>LT8cX_6T0Cv@o5ecr6PGf8zZFJRT70u$RRv>@jHocT+CI|5CJq0tiA$C@fZn
zizGMlTK<FVRHmXGfH&wLAP?;XUPRY{RnUXr5M&|P46XqF0gnPr0bH3X8<fSOTAt4r
ziZj?V!kpM}erLqa{bF9nJB8N7V${HBHrX_Sl8wR>i5`rZSRC@>FX#|nnl3|ZqcR8=
z^@})7b|pKIugNIUiaJl+q$Uxi==#JG+CY4wga40V_s|P`e&{8BB=imcUnq{N6B-=L
zoFG`H4f!fug35|Cq?^TdhVXdZa31H4dc}tEmGVZ;1KPwF@J)H1Y6@6RTLZbP$5iD_
z+qA<iB@BaYD@;bmJ<CMrJ=+x5B8S;6IJ>y3y34v9o};ddp8uSR=e$Gj?PJgMe6~*Y
z)U*6_Z#8+`QA1PLBz+I3PB+N$T{F_2sh(y_QLnS^S6#F8Qx%z8s>+yqsm7QVs7@O%
zsfrC*Dz`yYHPXwfPP#v;w%YBgN}3WXR<#hlirzp5BX3|9dH`(%_k(4CiNJliu`)_>
z$fZS%1PSFt13y=2&uN8Q>~DS;8{%8AorHdDmT-tYF1olK(sk~boWVa;+6YBJx(GmO
zNt0km!?)zi$ZVxKS`yfXo(7Jh7H}-u70gYfUmel_3_?Y~DsXs$;58*({w+5abEQ`N
z8?gg>Ko}ew!LN>#<}#V0_+O#RF*m&?YNTdFnv*lamxzCv{>05tZGxp66W!@?#4YM7
zQJb=m56Sste-bBUVhDAac$r{Wk*=Fys3rbK7vtK5mo`lB`zxWr#i8s(w=fWa&`_c$
z^P9k#jpWPl0;)K2n(h&^GcfxgEOIBJwZv!fy|OKFNBk@P2d64CR8K&+b|P{_Z&9mE
zN3{(t9zzY=1XHektEGu^xviP2fg{^>##zGs#U;9~yO+4SdagT<c#b%3c>3Gddy1?z
zJOeE!-Oo&MS3P4D*OLUp$-425&f2B+p_+ZR^XhxnI_e?|t#Vm@sJfbSRLf1g>V`2%
zoolG8R`ku(W_@L~Nyn;q%|X={b+T%oY8u)bJ&Z{3MfebO0BQ=(0kf2Lz$)3Lw2&f_
zL!?E$;1a9w8NxzNFMwPjf18#0V{CunAsZCb+<9>hw@Whc2jzSGb!DOO7U(2qgI?(m
zR3zPnPs!7efl3UCDlO3rpac2=Kv5W+jcCC`Z~?Fg+5n`1dSHVxQu!cllOw|M#Gm$w
zW!ObR$5=o9-$;2b#PIRep)avs^zCRr>Oy22c{Qvf|4VelNN6KbJG6yZLEj{bsVFgk
z>Of|aC&=-nmeP_Fsq4i55?)%Gu95Ikkhqk{r3Lh>1jh$>h0t@nT__iy7D^&+hZYi*
z7!&!4`9|Ij|DcK@uF&Av7RJT4jX3yPvCd+5_Nu&#Zv?{9H+YpYN9BYp+B3*jeO)zW
zysS;NSPf=dPt#rdSc}8i(dKl~_FJw2iH^9ymFpVpp5ltRFFCt=&N(J}GVDD(W*g+$
zW%<|bGLx=@#`><NhDlCYx6^@Z@7fL8Y}*J8V#C!{tjE;@Elbra&GXb3OiR`8jqBBZ
z!zOh^zf{fW2C4J3cJ(98Y1L-6N7Yj`5=GH}k*n|)cp$V8Qh+|-Ii)l(LXOE*q)f>s
zW{D|+LF~p)7A|uJp#|sXK@Ju|>_EZD`GnrwG4TPnLTb-1l>_{GWxuc&7$_bFlca6X
zPiY*yLG~cEm7T~7<rmTb_=T(kwjs9x6uARbgEs*Vs3GtOxUV!&Jj%aPPx*;3S;Dyt
z(Zh}s`ouc(XCqa(^ss?_8w$rx&;`+JR8AyD2E&s`H0&U2Fn(e}D4)1V3xu7nN-n0R
zkv#dBTu!>Eqy)o9#3O1Np{HvSU1=F#LI1)p(ogXBiGC5JpW}uQhPMpWBX)+)5+0@p
z`H`tcy$QFW(df3&%2-mkJ^LflfqxlWDCV(Qa+)w0TqI#IsVq^AgS6TrWTAeL`h)R-
zHe}Wsep~C97TN1rK08#l56(l0e!)BLxSXz2F51=7wcfqO8FU|XSUhv>kf*xsnfsk(
zi2EP&7njad-SxyU+qqAF&9P5cY=5J5*vo5M+OBCPSx0MjTIy=<n3FZ%Oa_hLD62_>
zPaV)dQh(DeQeW4WQm@b)S9MgwDp=JVy`FH=Vemj$4>gBw0ZwqT;#2C#k7cuTLDGnK
z#j-*~n7|JcesicWmn-I5Cm1&11`7SS0$~rgR}{G!(gJ?0Y!&`dZVKapQQ|1jC3S^f
zNM3l7{1DbC^^i?U1|ld^kTyVhWCE}k9uK^RS^zgdN*NE#R6_C(xrdY_?-W`}pSYf)
ziR~^7h_&GFMJjX6!w!}RDX}*+6a7w+5eF3wFC(?#5@cnjkQfqrN9?D+5*QUB+EZo8
z>*Of1I(de?Loj4-qA?}m3#gm;4Qe4?K=sB|bi>5$Srczgx5CHJ8Td*14Xz1wCH90=
z<VYq$P7Ej0HzNx|ZDZE3oz0A-@}FY^MTUJS*ArTRTcs~B2#i<Ff#RAFGDSaJ{lfTE
zOPX~FhP6y9>@_Xf4%u4h++pAB3OVv!W>;2%;VRcQx6diMHO?BIxV?twnGN>Lw_bEt
zwKQ-SnNGQ`7-i=kLwn~*{Yu9#-CcWKo!@p#YqAZ}R<pXbZ7oHb9_D+R?xro8*2cdy
z6%1YtnBe$c+ey7ib5qqW!7zqaLysU$kq&Szm;o)&VW0>YqTE#~$$Mn0v{~|s=fw^J
zCmiRO3w8M^LK4ploA^f3X`!()RVoC(Dm1bV>Z{p~=Iftp2AZ?=J8UmZqnw?sm)%3{
z!@Rg-QWE9-nKZ$5B5ADao7d+Y=OG<qT>sjC+cT|smWcU)Q83ogp@t8tblnbkuI40Q
zP$$cIs3gRZK73mwm3sgWV!Og>wg_^vv!Fz(0wuOJcz_!VwBrXUIed~lSV$x*p^}g(
z?Bae3M)snxJ2qTs8x8Ymk&%3<@IJ0Cvw>|Fsv2)iFOHU`Hirv|1);6@SgIK|hX8}$
zv9SL{u&Q4Py!6EbAAP%mef?S3;J^bSCs>C5iN~0FlslFm8pl11{3l+BrvTge4)74E
zo{CYvYdSz){Qv|sR#NRXeNczZL$n@ij!tD8X1Ha`F_y4*Ggq@8vgFwwS!>u1+0v}l
z?f1?9*d3-$_U4A4w*I<Q+bm5*>ot|mQU?8G`T}n<zJdB0R8Up@3NTey7fjdc!6upr
zFjSobEKuDA)}gb2C5Q&-1rJxk-~_olkSYz3GX#w|jT_5Vif@SBiR=nDW=_*zC?9c{
zn2z1WMg{5z-}=%5SBmHREyb<<nME0XpjaK4R4fLxz82Vh-*bGje=KPTnCaDlE1|4F
zjj$)UIMOw^DY`b;C-x`!Ce{-3#jatOVs-J7u}655XgdOqJRue_>EvyC6#0Z)KwiMd
zliPz8$o2j^#OdOa1YbB1-&8OOo0LB?xFfG!0L?4uznv=;AIqhR9_Gr0a&Dc%{&_nK
zp5>J<Xq+F&e~_P<->x8@pIOkN;NQZ>1+$8_6h0~bShUQ)-uFECA+U(pi0`5=Qo*o2
z+$p{@wvo5+Tcp3G2EZs_I%I`gA^p&EXbtsK)d|f(^+W9d&1Rih+en|O&C-9=?KepJ
z9mes-KPI<%zD2Z5wOQ>~9j%<z+zZ|Bz308NQ|>0CB{!z_C}l2Lt4y`DP3ie*1IyMd
zwY6;NQf<q=NL!y?F>QI7ze{#4J*R}K)WX!aB^RgMF0mx}XX=`y8mard_fu|qCZ_yy
zS4~0PL~?!Cw&cl9ZSqM+i=;pHs$R4Gv%86{u4|Naq+_XNf^D1mZ_92|chgE^TSI$8
zGu<m)O-)SWP(4>=!*!7LV0W;zQe8eH(tK6^X8d9Nd}L~r3H1n{rY4386Di>uK8H-g
z=MYx>Bfb`2gij(C;it*}@Km}7aU}$iox|@F9qSm?AeKRoiB}2rXa5&6alM#b+<S)Q
z+J@`$Ps3gK){*-B^9ao~iB9D9MNhN8qQ~R@=+M~XXhCFXv|0FRWKoC--=yLUo9OfX
z@k?}GZ~=8R(3?E!Z%GvTdg5b!Yq4~nKj`pH2v+qOf+Kv711Eip0<^D5pthgzkMJ+|
zPw)qPE&NtrfsZd5>N{Wfthhlz_2LJ4_lpMSE-0#=v!tkR_K%`q){0^{dzJ5E_76Xi
zGa+~@uRhKdR3dj3*QGN8otg3Y-;sgT*jQ<12zxQofTv<{A)DPLE#@7{PhlJo7I%T!
z(q8DKJQg0P$grXeLJk4*kXGPOqzKd?YoVoZCHMpM99F=dNGkXrQXi;@4pzpZo8<*)
zzBCr?CsjmA@i}rvY=$fs55sfB5VS~a1Z@(RfhWa}z+JHd@J8IMd=k~lcX6j26no0m
zq+aq}>9Tx8o~QVg3&0An6*L+yjZ8$Vsb;9#YX)gM=|r8^(AIF!SkCy`w8yy4e9~BC
z9&G$&eq+cm>kUs$4fTb_iMp8KjyB0qL;H_DM-$V%)_l-W8dlduJ5m2#n`T(5gN@Df
zvQgAWOveq+%xT6>mZ8SkmI2157Nc>$d4=Jq>9zhZW0B6M_h|>{GBvL?uhl)&H&vkO
z4C+IUBPenL?hjvvK0{By3D7UV1o6t5#3`!`_LSEG>!k<EXYqwxUOXvn5GII_kS46*
zzi=LYBYT|d6Hn$!#m2CBWKR5IxMOS-^E+Y;)e2vthKKr)ODG+2j`)Kq*stLJpfR{N
zuqa>(Gz@41?E>oqCj;ApLxOI6Jf=>Z&+haL@+UKZUK<_5bYwS0VBtyZs6?=K01>)F
zurv_C<+`e8K!JKAG+f&QIi-VC=k@#5{}`OwPlmsBg@&p6BZj61o#Bb0f}S&IbwR^@
z%`QV<wcb#K_SP>#=IUy|>$NIqmqrDiRM!KZt9B?1nyS=5U&;%RHS#BTpqvg@k|#lo
zbR0Y;-2o~}`;}Q@Q+b)NMeNM);j`G`Y}dFLy%k*^t{t(4elV}e+o4x@E?p7pOCv!K
zJu;9+w+W1<4+b*np}{Gk37D5ThyTaO#Efto${HC>?~8N`8KTk9sOSLZcyuoFCOU%o
z9!+K5MsI~qMVp1jL?6-GXd8M><U8dH&!x(St5GePIN3b(o-9RQCTVgfd4rfu&c!>D
z?J<<B7(7i>4AdaH_z&UReFCQTb-|7m?+cD8rUKoHdj<Lyzwys19^$`HZ18i%S-wHO
zufCr?!MDyo-oG)>AP^4D4nD)H;W9ap+!6B8vm#H!OXBZh+jt+hUW$sHf#1qKXc6=l
z`Gm|-y;MC_571oKY|#F#oviz%wdxz_Ht4tOAOoP^XxON4XY6EXZfa&+Y941YS^qQV
z+xlB+hss{o{me1eJIA#<+3MMzI?vmz<f)_;X`7OVl&Y2TvefRBccuPISzPL43Y~T>
zrEc1il!+yqq?|1gOcqi%B#%oiog7Iyo3t+_EvaY93a>8ZtLJ92#nU#qzWYp47uPRu
zPv?72N5^`1BfG;@)|TNgTd&zzbB-m;1eh-yUB+RC6n&1)s4b)Qt1753AT;t9v<!j(
zLOCh5lzIr;cr7Q#vtxUsKO*zPGIJ|5EHsEl=t&fl*zcNTKKYcWM;#?{sQ-v}iDXZN
z9+H*AQ>p2ZI`qw`Ko`ayhs5|2Mq!(UF-{IY<)1|63oD~$v2|>!$i#Mt|HfyEQd}#x
zVS5Yx*j{{f*2;Z|?~XT&bI}>GR*}`w)y$&E4|;UC71e?HO4JMO#v9N(umRNnf_uq^
zL6FP}tR^l6DiWsxx%j=nF+3+Q8V3{VF$Pa!@c@F|4pa_y33vnd{l9(5{-wo>ePxQ2
z;_QN}#UJxe7JKr2#c%WG`S`rQ{3rAO4ZJJhgJX*J;{AO?$@PKyG={mEfg}^YM?Z?n
z%&fRAYUi-n4t@>G3jwaF<Q7KDE^(5=i2Z=8QW`i?ehuoCF3@G=9Ml)cha`Z3PJzFn
z?up(_B{Kga_yrh&8-QJrBfzpmCfSb6QI;cNxi7LrHX!NpB{)ZF17DOrKwG4~&@$;a
zxKtViu9g^JyR;fOD^&wBrMS{Sjw?Up7Ql0*5CFh@a2-?^?t^?pIwZP&H_akVN8R7L
zQid{yo5pKK&cvF2n+wbXEE6pmmMxZ=mO+-|<}c<PlhqtCRx|O2Hb#|Ua>5&)>8I#=
z>kGBz^&7Qq^^>$G^^3Hv4Y##AqfS?79HF~mx}+O!F4BE6%R1H^POPtVgUm~HhfL*l
z=M(9CmtlZ5Lr-dY=vHZ3Xwx*EG`G|l>Q3srsxPV(RX5c(^fqcojp$~i2Ld5W;Gysl
zXdiSFybHbr?g77)V+teBl^t>$sjXxb7m45a8^T^Li|@w<IZga4dp^21-Y(K4_LF%W
znGmWOM(O>bi=>^NMw}x1;^T?Y*kt@-@Hy5XI14ic*JJgAI{ZeEz}I3`$;<dtDwRAK
zdPQ9h9|{#mcZ936`=ayt6Y(eFc}|iq3l+i3|99t=j_6Uaf_feNLo*cZptGna>33-w
z8+_Ue23Ggf@LWI7(7}+cUvA)a3k-j>^$puJ_w}{ZUj2V)f8BUwxi$?xqltiD)dZkc
zTY%20A<9AYtt=r!<k5&qeh)vAYQVFl`B0K{2;3)b0PsXJ&<iJ}IQL$-!@l4~#P`S1
z*re#4NWbv5a7O4b^P3_<`^hDtr$oO{H)3L_5pg>-m#D@_#8c)PIX1kKvP6c`*CUlf
z9io3iucM=x>anNHf*8$Qj76B&u`h{t2Xj5vl3Aa~<UM1{LP)G^=tT4@T{F6cJ{S3m
zwnggGW5QngG$T>pLs?XuzDAkpc~lvyCe?_{B!>{w$&ENne#bTujW7>!H+T{s6l{XK
zgV|U(unEHgJux6y0jn8wWB&&K4@GAkV>R0L;ri)uw-FfJ-F<QQ!DVr`#o@)>7Izl+
z!JUQ09TvC6ZTy^5cm3x3<8IS5Y0@Y6^SiGrY0`?Z!m$N0AYLk7H&Hh6n%F=*rUp;}
zb}6%)7r5@ycCo11L&?>H`WoPG6M)M=rO}><hSk6(<9}N=So87zwkOt~wlTJf1?kk?
z-q1eUzQ;b#p6obizw5}cA9i+iJa#1<l{}Z7FTJN-hx||6+k=v4W4MHGdbGK}Vsg8{
zzLc852dQ9aTcJ~-q{7X@>4onXRQ*WV!Woh5LV@U}LNlU`3cZgeQp+aoPaTugFLixV
zICXQ<qm*e$6H_WDp()p+Gm?u&A0+jS<VPole?&%vj)j{CJB7S~H-Trq2LAcpHQr*L
z2kw)uOlPVy+djhn#JbA5$+FDS8Xb%hP*Hdp@Cqnm%r>s86}2%kFV_}-h-G;|=*$k}
zF47Km5M^chlD+5yghACIL@GkmrfU=b(5s2bjGOGno*=t$zf%MFRQi8HHoaTC$~=^|
zv$VW`bE^~hWUa4&=#9jGbeB}yxF(G=n#<|NPB~w{Ay?8f<nmg7IbZoIO_nQ5pT&M+
zMPa-!iyP0sXGU?Y=rQb9at^bXI7)9!(A3p<4=Nb{K<<i7CA-8*ki}zP2rRaS$jL85
zT+H8-7@MCTx8!5-#d&f*nfo%YQ|`Xpt2v8vn&hm>7PH@G<zx@fO3LY+wIyduR^Qy3
z*+cTm<Q&c)o|_c^k#{<=Jl2P7pYYJh<Xz?`HHO>5KtdI6zIcSslvJUdQdUY=>&Sz&
z@=7<|s#Y}Ks-&@1+h%st%K$E8FYwTSz<FkCuo5s8d<U!m$ASw%3LFCVhbn>Rp*(<v
zwg9PcL!c_0W7dM#n-$@vW*7!c33_ZihxQtKpe4o_Xu46opcHV8@fdt!Tm<Wx&%uOQ
z63PMYK$W25@KyK=G7oKojkRQ1##pynN7*~tJ2)u^>K^Kv?fJ`n*t^s--B;Kf^9}Gq
z{*K;zKE~6~*V{A0yWPFQ^T0LFEjY)x>N^KHk2*#b7|MEknj_Oz-7&y6*MZt3$7Aa%
z=RRu**Ier<S08J{UB%kfZQ{M$5Ad??Rrq69I^Nh-0{_bi;+YP@Qp^#z47Mwl44V&E
zt(EZ}*0%T!ycb>(?~d=c)W!oA#WD-qZh40WEXn8?tTl2F9RS}#20@SE&fsmR25=Vi
zn45tw`UG=_R@-Q!CbV36wK`dfDwMEZ8o=wq19m81j(Ndup;|IN@;!Alv4R|4V5Gfb
z^AjubKgHqvS@D1KM#ppVGUDCx>m&lP0FfH6MGj4Dqka-qm}L~pwk=?^qTE{%7h<v|
z`ZY~%ZlKyUz*n&9QQ!;`gtlQa+!nuzUb1$wyt19bH`-rX75gb0;%H~TWItd}vHxRl
zWZPk{WNl@aEl+Kyuo||0=rXGpd5yn=Qt|WPSj%bPA@<BHhk48$=tRSf68ZvUnw|p#
zdPR7q))D%k)&-*~ZPrvK8P()}wTNU_Nui1SkY6mG=Cb+A>?AJE)MmRg^%<3(Pk*9u
znx!96^_UyfapnhAk1a}nVyDmxxTkb!z6f)RAHuW}HZqrm<BVH8&a@RbGh@WD%w(}9
zGeqR+#^M>;DUPEb36<y>f<h$=kEql9E~+j+mAb;Urz&zqsVyu^^2|-L4YQowMt34J
zsQ_7p`amoucN3Y!NTM@QlX#i162lX}62Zj1#FzMq#Lf7g#NGITgcN_27?mhQlqN0`
z^~t};qttt9JTsh`$2H?#2!n+V@)_xu8dd*iEYbn+vpEoULaR|bGR^W3^;sKO`r5|e
z-R#}1KtbmXb1boKbi{019nJ0Y97pYa9i<%g9sfGYIrchhI5J!V9J%f@jvn4(&K%zf
z=aN7(SCP;+*P-xKHx{*cY9?*)R83Ct%E<@4Yg20Yw3L5+jZ??_hoz<krl$S~Oi4W%
z9GSW>)HStxxO!@lh%5C&<ZH^5=$@2Vv|~z*r0nFjNxvtTO}d!$I+`187Ud)JBVWVo
z!iPiCL!E=Qf}i}){7rqo`IdQBdXBozx(+)oI~Le>*&5(u@Xu&jY$W_0&Ih)FV~oD0
zq*l|n%cax-Vq>{Gzg%3xS_O%|&7GmH6&Sb9VB}n8C((?VO0;5@5KEW`guqlF*RyBH
z9$ZJN5s%Vsgje(*;sxfol)-ZH39hbsfuE#Z7S`w|#W}`mshZhdK4@mjPt118UURNe
zx}XLbZIxbnjvUl_$On{tl3#u;{vk5Lzr3R$#Y*zWm=0WXdRYODykkhB5n~~)(`^%-
z=yP$Bsuo{G-Hatu9by~ExA`Q|DZc`7Juf{`EN@(Vaqi++BIii{ketjsDZ5$T`RrG@
zhqE{5zRBK@+bHKrZX%~)-uv9_JTdP^e$&{E*xC5Ecpbt={7ZHu2h*!5hPh8q;yC69
z@8xQWh50|ELc%)PDQ;3IaklzM>Y#0xt@?1~v|dqdW>D%~BSWiZ_R-gwknzRbX+(hX
zW)t9)*#{^A3<lN$eE|k&1+)gs6s$G^d<Vang`o>(cW8~d5E^G5hPs)zp_b<Bg8Bvx
zHfiXnnFJRHhQU98pKuPi6{!X<M{gnLutk^)pMbBl{$Y#Qr#KEfM!Jf)>UpNSKYMq2
z>iZXYy97%5g28#dg~3g}zk<Vj!-A$aH!#jyA#l^v#E*Nb`?|S(-ixl7yO!&*>x=WM
z^NjPZ<CHVs{>E9#?sZME^>)3q?siqRzIScMMHh~1uDO;h7iKx_+Jg;tb-_SaQEau-
zgL#~3*h)ty40i0oX4qj1X`5ylVPh;mtt0Wi);IVoyo|Lm-rsu2GQp~0J*|x~zjZ3Q
zAK!}Lcm~|UauVu;?FL(+a{xEe$~*;0dIfNew#Ia*@AN-pt9C=Itmu5YRF#`6jAX8G
z$0;|9lgsI)iSksfI6xMSIf)MW-4l27e#DpLor-VEyBQbq!inwqClYgGi-=wEO=K+b
zf%=_n&#)B59$>EXe{g5SZo*x;gG8v^lp@AptrIZL7!QpB#vxsx`d9>cVmXKUt;rUv
ztu3BmYiJd0tTka9ZQE))YSXQ!ZKbWtZKd&gHjCwj^)=erx)r&P4}@#sHKC)HB48m)
zabP>v)Qn;?jV<Uc-HN*PVMt%?0K8kh3B6XXfV{i`z~pYGLxK&vcto=cozx%?DOI@p
z(irxj_>4Iq^keQ7n7NI2Gn2R~jKR)jj<6InhMmneWs|s)>}}4?j^bs;Dtu+O3)h&i
zxQUr14q+aN6&Y1zX}@&7pr+EgSet$$YSdriO)6bnLV;p?YQGSq>I>h=XZ%UBCqI|`
z!lje_xXR>v)=#!)b>b#N5Y?G%B7@E%O3?YlQHm$(Pzd=S875bd70Iq-JF*cugX~M*
zB`=Y6sJ>JVl}^7c;Aot!$Iau?gz7>QDOp;plu#tCu{OdSU_1rK14+n0s1a5kDUaVn
zKUzy#8rwVI{T&UgRh+8zy7Nz)%>~&DyN23v*FF0SXH~~y=Q&4ZXIJNUN7%K?0lUXL
z{GQH^2HvKQX}%_o^ZquD{6KeyD>U4Z5}xmHMGiWCMLs*WN6R>?C9QLwO$xgr$^W=U
zBrkFwOdjodojlG<B`@(oDaZV1%IkodOb5Ru>!EYWiSVT4i;?8y&e5Yum!e5YKcnNK
zucP}S%c7UUdgNHBYUF>xQsJV3&%r&u^Z?`8><hUMd7REaU7u}T9m{ag7RB~kw!w|j
z0GI=9E#Rq&+H~WmJYKsgu2Wv}Kczz42r+{xF8q&<@_$loxNqbIc0Adetx48kE0E3E
zj^r|S6KSv}xu07}&ERVn%siOcCFU?+r0;BbC7YY0GW>l_5_p{yHRFZ!!dxp42FfYt
zfE~(J;FB^HNGN&c3ngkUR&0h}d92No2dXcnZ?a!%FSQdd35$fX{B8au>*U)p!#OMc
zip?e4v6;jRMoM&J3Mbyto#P$o6|rm7-TWdHkUy9FE$=<CG`BMGF=ut6QH~tHkv%#7
zdo~s?oqax*mOU@lA$xr6Y{9u>&iPo8TzkA&-u!r{e1BqR?4JaZm_q!oV6sZ2jhak<
zqH>s%bQ^9yvyJb}z7SG5Ld@k@=`{aUo+O-Bs)=LOxER!SOBq^wxuVX=`}8e}#i*|K
zH=e3TjUigDA#2IzpL#R1kTK9aX-qcjn{&*E=6tgQFwcAr%qpPQ>E=~%npqT@ZO((%
znV+CrW?eV}oPZAi^^vh4jZA}Hp||00SX(rJ<Cam@IR4%ivvqK=jyq1yRm%O<Gv2e`
zx5isDFxR&#SjWFJbjd#`tolEOu>cbJ<j)K*_RkHw{a-_ie0YfR+Je7(N&iRBZQn@G
zYOmkZ$Mc`Ng8RH1bM13yI(E1p**Ck-+19uZTIacU<3rs?EcM;@FvP8+|G0XfBV6wg
z)HMg$=1fOQIJ+Ymj>Sj?$7ke(y$4#so<NV=wqWIKZ7fHvx}}))5WWSkV}<ZD*1;Co
zb{VT+GtsiPIw)ryj4Zd#fHU#w5Q6ssV^|un9ldWvkT&`#=!Ciz5akm_Iq9_4Rmf1L
zaT(G9=8Eu(%H)0{E3tPI2kBYy_SBeIdGfFPW`rkyN8(Xl<;250IDzMf6HD@kC+fxM
zM3MM;qDJBjIg!Yw-jiLJK{U&{+1val?y`78cqpHja@8{heRo_-19lpz&=i1yt3n&m
z$FPW1D_HGOSQb9UGQwI5-);T3U~-kW*0A=r?k|`O-z>jbISjGpqv!EwNH_c_Ojs5{
z^DV<bzok2H0PA8_!nzx0&;fdJbd0tPnXZ0>=PFTnq1*ymC=CJ^h~t5!!X$GeKi)XS
zjnKcbgSFD^P<1UcK`G2Em*3E5q>FT1yhGO&6?(hSopB0pnAQAfwh$lSE^!aI?%W(+
zW-AH1**8K<c9cjk`Qlb4U24J{kmB@5X)7&AO=(3UsC;P~bzf>pt(Ro7y>yDy#IfWa
zu_{?lgvjT@7vgu}E|Je)CMFh?%-tpCaGwd7(}`7VDKf(LB#$wx$yUrGlA&?xEZvFP
zL?5LN(uHY~zDmz#7BT7ULUuZLk;~#!giYcZah^O{-l8^CpXx<*FJLJkg<rr*<QQ}S
z>yB)~KcU@hH7y_QgYh)ykOJ$eWy^JC+D5tmu%C11+wZ!&JC3+-I)=NeI_>VW&RwqN
zu97awb<}yrUCz0{li~Q?Th7tccfwxEU)7EVuG>BYy4dyv1#9=v8LJXnW?dOxV6{gM
zSf@p3>&wV!TT0Yt?;XvuuZn(moQWFFr_q}3Z_x#w?C4wXk7z0X)99$ck?5A-_~_nH
zT6979N~B7pR%BmfQ}}J<b?9a!7W_T(E^scq!T)!tkZ*c$x`*}ecUAT6b2RYGvZcA|
z;6Lp@(e>7Oa2-n;_yc)nY=hQn!+{A(H)EzWLOUlMQquT<e2={#9$;1p|IpicJN=FO
zlj_4Ypd4Hh#j|NtnCnDM<c?4%Uy6RpKcVjkYndP71U5+?#0^sh@|V>?0;vBk)->8n
zt<92hCE$nr6_}xP0prSiu$np+?5qaCX6h`!tsXTmD7%dY$_V|W?9!a_4rP!OmCuRm
zMND)FzYCkWTYNdT9RHl&#Vw$M1v_djYa?9j*Z3;tS`23n=P#mn<{8w%-09S<9F7#T
zCz0*4W#VquGGb6xaiU_@%S7p{HHq}B!HEl5?GtUYJ14w3V-iU2u0)}{Uy0uN^@&rl
z{X{SkA(s$a3$iqg8cLs{9x~17WbQNFho8zU7ToM+@i4nuYRHY3UvssU;e1R{_!a7(
zLP#qnuG6lHs@7BLsmszKeXktT+bbmvQ|Vz`Q0E(Cwf#nE{kri}e`9Pja*Xz-WGJS?
z+zpg88-rcUOmLgI4#I$r@P42qG6PIPS3ni9x9|W<5A+mnv-oXU_+tBKo9_7TnBdBC
zy?1}{l<@xJ>*|{v=<U~o)dL;EUjx5Kx(6#nw+AmqPX(puwxAFl5Ih%k1ZzeQ1r|kW
z1P+I9`wxb?`IiMLU-!TkpU>acchhU}4fZ_t8m_h8&CYHGy&Cl1w>|faw$AgU;UzsJ
zcGLYC?d+zI53b5cPuCv!m9r__${B^PIEupM9ev>4_M33P-UeA^;}Fz#4xMM6i%EC~
z%Q!rQf44lv+giq3PhtrxhBdaeM+e*HBCTzkVb;1D>SG-OF2s|7F_x1?GFD9Ag3MBL
zpxbf~RK&7od7-jCgsZA%Fm+{=?kdhBm+?i3uPhty$4D^;T|GvS$MP|<Uw#jwRsOHU
z$owOT8wJ%omX%Or{fV#f5J@B)RB5syy^1=*gqSAWH5L`-@;PD`@vB@>{-oN~H~LrY
zs=3!#2(|`_!LPveNKN<wIv)84n~9FKbjLnfU<-~fuyB^QmctepFJW=x(=h-)jDEEI
zjU2FCh6h=WK_SZ~@E-O*U_92(^kemmlW0h9j1uYt<c`t=*(#rcCrD1Xz1SbBA?yXq
z^Y4Kg91L`4%b1&()&@(D&?nPNwG{f88mHbWnUqz*=vHzEdYyEI&J|lQt;9HUMmWS4
z7shfs`8s?Gj|uy@e}yvKV(~m%NovgAm7X(A<-W{eIYzVcEV`89rkf~-sTN8Ls)iCL
zy~-}~liZu!ESDgg$tIC4<q&hFZ-igUCiaUOQBh1IFAE*X#=>&)DgQ6omk&}jH<a4Q
zT`S<IB6MMH8(oMi$8_etGS|3E>}dWH*GKryuM(?>s&qiwqtsCT&_1h!jkWqHptbow
zNCTE52cV@`9b^=KwqS<ZE!XW$@S@JH)()=UY)##EJK(u!U*u`yc<FiKNO+n!KY7kO
z_j^jY+IaT5-nvV;Tf5J>j}%;S&KyrQ=Th%5M`_=B`(58PTTg$!HPc_zIwUX}e;;^a
zX%K8<*%YL(pTXN$vCwU-SBS%wg?d^}gb2&i(0M#3bik^GF54X8xIGZA=?sKdx$NOA
zw-~D9eI1(R+Y>tA?-@EA5P~y;lY_p{zk!h<-9IB__!@;?danehd18Tt>#e`ObFOc=
zo%T$&R&kH9v~_kzo7?Nb6|BWTyCrJoBSrPsP;>P;utLr=1TjrtCCpMg78pk(?!45O
z-BggLM}!cQ;Lp)x_?dKZeheMvm(wlz7xZbqA=62C$)t%3*@)DUt1MUK`zaA&lZuK@
zG)m<4XA*91mnE~kavjK2x`I8`v*1znE%;8o4t`a~fOpjIz*4m+P)V(6-ckx1zbQG|
zIeD{MM6Rl=l5R_?*jgMXKIXH9mfR5G4wK0@qKET0$b7CjF@}2=Pq33?quCPqxlAH=
z5c4AE6a6l`I}K*Pp}J-Dpx$NvA{S@QActk9kTWx15H~Y75p}Z05I?he5SO#liAy<y
ziT`pJ5Rv@T#P}FNyo=W&TM)|&yyYiZoNi1lWe!kZSR0+jPog^sU+LjuduD`mgXt{S
zWQ!>m*e^;wZh`uc^J%~Ht2KicwIf1jy^r{p9+p1opCpfQP_AoCQTiLL)LBNVw$Y%q
zqsDFhrm^1mW(+pnW*wlnnFKyC?NC3!0~ZI&A!*R>Xeamxb{4VVzhP6YyoItow2pV2
zw#S`&oc-N@y03f27vx_Ze-;0aK<&VQP$+mR{5beH(lvA}dM4B<DLZr}NepEt<%K>Z
z-41O?S`tc0Y8aXtC4+||yMm{~ZG&4va-d)EKmZN2D@atzAM~#AFLsymlg<mio{qY{
z2eu2|X4aD4_m(xDr5Nq*hqiO~MfST^!m=|Cb#Tsy4msLDkfQ}O&^{4*XnO)xv$clz
zTXW&Cbr13<J`zRnI@olJ#gdCXv2?_y;fGMfnuiRt29Rym;_yam2<mQ)0iW;#W^uf+
zQQdN1^I)~re~_JWBUlypf<1+p`43mjsKBOc=jo+NI(1KqkU<e3=JEc7o$DIE%G`==
zq6frwQsras$da+fWQSNmD#Y#+rQ?~z$9PlnYT^g^fcS^f$>(%0I>f$amUAPx!h%b9
zCf*ePl&8p@)Do&of23V8dK+zlSLWYfIZ%fNL0)7EOd$i1Eod<m#crYvu-aGyY&GV>
z?qR3UUs!20fz3g3uuJee>@9R1`v~sDo&b}uqh=#)ieaMF^>b*R+7sQPB#@@^M1&Eu
z;iEzucnrT2YQp^jE3<{bdQ5v@C_UXgPwg^FQ@8ZHWRA9y^lG!n-_%Xybmc$tirkoj
z<)>74X*zvYtjmN%H#=9L**O1^>&M^YUvL>h(}FDho9!x9W!>^|=8{~FX`!5=uPb%w
zLh3VWs5*w)sD`Oy>I?FC!Be-YW5@|=XR?;sk|dRO<PK#ZSx;F&zLw9DLuG<wq^i^$
zX&z;l-ckF+I&>>BgSLp}nS9{^BMP(G8e%$^A-3gvN`r-l@-DHj!b>OA;Yt}ju0A&A
z>q~$_W;%2QD2H^04D>U6-_jkOY5g1X*#Ug1qpbCfvxZG@6|v{LN&5-ULC0_2X3qWI
zSI+m|bk`5>bJuNeEB9>gEw|rW+q1-T+Vjy}((7|?^Hz4DzIx8lzFLllzH;^?e~N9O
z-*4UN58+S!<t>cAKjsRYL5l?{pp^pek=lXNNd3T7q)|XZ8V5$8%>ovzW#ARoI&ja@
zCh!4o9kAM(2HMzb1~xlV13#Rczp(qFzlEo-zr8ohSK8Ow_rkZ-`<s8aXM%sVd!WCk
z%i}j4bA5~Lr@fT*sHZ7D-n|q<UAK^_4jy`Bs{mrw31$t;4ZS~FR9gw}R&IiIWDH=$
zA;weTqxP7epyqRBl?t3o-omCyCD~!(H|D2sli4CXE?_i`$q>?6RD8y+7Kd|9r7$0r
zKk+u@nBY|Bieas*R75W<rx{;mhq+SuXr`%)f$gdd6xBgs4Q)A?uFWl|W?&ud1Au71
z0aw&H<{))*0mrQ@@Z<qnc_m4`DPNVl%FU%r=^tUDRE*ce+3Y;=6>SK`sVTw?B8&eo
z-kxt6JIy`Lb8*9SN3tbzZZo#*6eg1OKRP}08+G$n2de+CM`ZP1>12~%46*RnK0^96
zg!n77CNVB6i5QXXB9`X3iMzRl3i7ljF(=lYpyP9iQN$_Y7nwu!pi7XqnbBln?g}}Y
z_fh+W$<%%EJM~)XK|hc`(g&1L%t+P3hO|@c32g{hNiV_g)Ja~}?+DF}UE)Gxu5`{A
zEPpiGDY8*R4Vy)@I;LMAVLFUsrq{FqC4f~x8?X+z81g`G;2>NZZGoJ`_Mz4A;+8ws
zdw4JVTpQ(R?U?UMcA=iQd%E|$_l<9a-ycANm4mZGWkWB*dPs^K4O7vIkxNOdBW;qO
zMh+z>BF~e#$lc_e$nxaJk<{cpk@-oZBbTFPB6lNS!-vC5!b3tu!$9zKXuiL4DB;~3
zZ0kXTyIp+(jN^d6t^KF(yfxyhhPU*-#3p(+pgY}jkO!_UFz5UMm2mcjes@@*J@y<h
z&&GlEY!#r5);}Q*cf&pL6YzCQf261-g3iHSqc6}!m=7&#X@VTI^n)>c5L6%U05-=<
z0EO`!<Gy8+Ue{7pn~U91Hlgk0`N&JLHQY;}!5nTLu#h#3O3VbEroO1p$o9%(;(?Tt
z=q#2_Q2gq61{aMlWS_(qFb8AD=!_Uje~hiCYQ}p~HwtQUVm*~kpmcBY6up>Q!91te
zv(?yJTn6V7DhU(CtKu)Ih1^GZqP$R>X?65t`Wizso|sjEETAp;8EgS%KxuG0_#=E9
zo`%>F87YGdK~s=_&}<mNmctD(3p@rJ2(7}lfxEC%z&<R)+=#6-reNuM6U?ru=y_!i
z+Fh=UisCV3yAVKH@S|afI|IF9V&FA81-wr+1!!`(*_d2z{7oFwdlN6U;)Je7iAriM
zVx%&g$dF?MCCwxoNoA<@B17d0FX$!(J8%zwg@yR5+;Hw6{v~@w_>Da&USu{))tPbf
z-*i=_4gFKerv9g{p)|DxHB7Tnm$a`WrQIUE`gt;0zesxYdnB#>B5!FfYJt{_s-Z2W
zzN#;%`DzKen7W95rZ5HbYZB8_v9hg{zuCUZB5u1fnn%@%!fti5I81vh_0h{KGmP!(
zRWqa~fqRS%Pz4|bxe6XfTfmJh_mC%eb*!~*t>uFKEpBlFwt6m~y`$Ua_|22+uzF8B
zk9mi>iu>&DslNU0UB0TGoxaPSNxo{{G~Z$GA+O7ac}M!1dan2ex>es$S4DqUXJ>y^
z$1uOuKHmSuI?8_u@9qD~(!{?RE8;(bYQ9g%8(($gsP7Uy&o=_@?Q03w@^yzJzKyWq
z1&|!?R^*kpCwkpm4?FCwXIbIxh!6ITw^sD7x8-<F+LwE-IQ*Uy&iU^7t{1KfZrF9g
z9d#ORuOrDr+F;KG>t**ayq?=)`O~!>J?kuvoN^q4mfEX=O>8&KUwAiTqD9hp^tk#5
zGD#tzPVxk>g=Cst#hu0+p{st6FQHZ7lhwbuI?4!ckzAkCrJCG9sVg@}TF)((XzsF9
zkT9~wuaS2PrIilidj*j;tJkEy+C;geo~q>N*Ob4Ec4{N@zWT^4qg4kcYjc1j+9BYM
zb{Ke~Ed*|BwSWxmfw@GhV)oId7^Sq0dQ4rb9Z^TBebizKs@{<HD^0}e%4z;@*;PQk
z1DWm8DM}IzqMewY*d$zzz2~ds`}sS$9k?ku%h)#A_n4MhIP*tlI{on1F{<M)4~73)
zNHRYyr2E%)qTjCu#HU|GVoBzSME|UriQlt(Bo^fSmbj5yE#c3vl9(2&o5+oKN(>+-
zBtDS45*_LP5;vH_L{V-sF^zvmToYQ8g!qWG$vr8L!cl;_i~djT#%$H1Y!f|)eXHN#
z(v3a*4P&VgH7AS1%puYdv$vdMc2`ORebp(zc<l|aPHzR?H9mqkuo4;s_J?0U=}1Rp
z9QqACg3Yo3cv0&g)_-lHZK`9HBiU8jb-{h#-N@VDd)^oKc>^N?or8~q6GFc5_;B4w
zn@EEw98F64EBZ7koYXyeTGF}XYe|{OiKOggYx3X8?&SW-K=P}k&jok)BvpvEONvH*
zMt_C|MVAGiMgoE2krlq-Val^T)WLl{c+~keV0HZPPqk(Hcs$R$+LGsKf#ti4p_Hp6
zqB^_5Zs%#JoTC=h$sPme+Ma+HtZzXYN1&>BIyBjG4Z48Ug(>t7TmtP-@J{cLv2Z#%
z2fB&Q2ZPuopdHrR9E?>ldSJR%0=uC;LuV*m(8}^@Buk9Ly968DkGDZ3ITp~E$L243
zt?`v=uhS%|rI0t2LBwqNZla~sJW*84jt7K{cu{^sJe}JgKgNEDS72)=zA!fuSD4Yn
zeWpGMuobCcY(tu3hcXAbz3enT&J7kC3q!;m;zWs)mdP!ZJ<2-uy!u4Dq4D}<-Dd7I
zaA34a1IfUB@C2|7N&{=b6Tx@zUT`>a9Lz&DfPK(z;6Er0IIxjGYwWuD2Syw7G1&MY
zrfL1KPijdlLwS#mmM5UaBp&%73`W-Rx8P2k3r=O*LkhhRB&gGXNq#gdkf1q-C~44%
z4*JT(Os!oaL#>hcs<cQ%l{twX^2fwBsW<UMl!*%B1#+&ioO;7gq^t0wnT_0d)?oj~
zO<<Svab}Y+k@-u6nQhW;dWGDY9<2a$J@qans#~a?+H|UdK8!k~52h@}SgNzJkXmFM
zqV^bXsH29R-fgs_ml&JrVMc;(Y;<DMjC+j5=)f9!g0&k5xyr_LezGx4cyEjs`<m+|
z5O^xz2MVbf;Cw9uV)R?^STlyif#TR$Xow{SAHfHpG3#Tjq`es4-7(5K#rc<Qp6jxG
zs{59sljnld?cMA;?H%r};w$M{=X>Y**Eh}k!-x8w`xg7Q_-J2EUt9kf?>fKLd&l3<
z^V8qM9WNlmEPo5<6Mu2XKEGlc?SE=5?ca}o^3As_^-aJk`6i>Uyql0|-ZyZnw-)@+
za|@d8nFLkvbcAx;-JpZ+CD3s9H>jMu4@|fu_@wI$GQu?*jktPX*POL2>CPzr(ZS;F
z9XG9~>@#edEy-Tfw$t9<3OFX?jT|#Ay&ZpG9UT48RL5_~eR~Sr&dz~nZ2tm+^@v%>
zy3DAEPteO)25A9ofXX6cl_&5Dc`tNT`X2~NzXScmuI5{zw=q(fsiz8;v;^<dzVK_+
zJifB(7g(jI@Sk#C_^cEYb>)CqORXX;S06}mb%5MgljS$s8l{t-qCVDlsSOOjcF35i
z0p=^Mg_)#JGrQ?)%?0{u^PoP#yr$PMAL}2CXL>*5zJ5bLtDD*yJyq+cN7Q7Ummg^7
zrGZ*+F;C6s`>7+jTgn$EptPoY$>+%RQc>cjxILaNq{S@4)x47Y_}ms;<D5}!jqFWK
zr>sZxrc4`+W_G9c{5nOB`V}At{8~mV`h^p3er-y0&a9FUGC##{Wo?L`%I+1vmQx{~
zlk1I_%17d}V%GTgc#(JqqGkL#IX7O3eh}Zuq$OZ(d13$$5vPQeL_#b^Cd-e=8p<rH
zj#{5CtznF*ePC|u=h+FyM$T@|<TslmgkZs1t^xW>I5<{b0<KV8&}H=?q-gEnj)n!f
zWPU^{gLl#E&^@dV^4S7oR_jGeOWRoMMtdoH!tvSB&b8ci%3a>$_FnUj@YVBQ^6v=<
zfq1Y;C?#AgTscxTQYz|=!bvZqcar`{8j&1NVv?IC4^H_b`EttCWICl&vMbd{a;MHq
zqEr5hUQDq>`=_`gdC6R;SMrtMsifh7L{#(nqqDumBci)Rc#JC=`ssj!1MRtf!urs+
z8b9J~VOilx!6vx9XkS+uq@!~<+{*C;YGdyPb+K8X0oG68Wc&rV%JLIDfH|P6XdCD`
zvKjgY=R^6>Z!iUJgcHDbILj=8yfZo@H}tW{0c{GhSRITEQEDTNWd<%Rt%qST3di`x
z&?oK__?}G$zcH-=i5_7Vp{E;tsrmYGa*^gIm#XWDwMqqIubi2<BmI*Q#q)_~;<LnY
z!A4XSMiB4#T;eZ&DY=kuLapE<^l2VtSRP}$2x0D_P>t^*_7Dhhj<`iSAhnVo$cCJ$
zTvVij*$wFd4KyxloY7kUX#T681L_$Iz)ePT=$%n;)7TH=W^IHut|B*$a_A^y5i02S
z&_Q|vJ*{bIrb?rx@)$*wm8dLLM}LU-k()wOWCwo&p2lHtFSaw(oLL7pq8|cnDa9O5
zmNqkpbORyg=ra>XHCN)DdOwb-yW_Q$9r1DU)p&-a$7AAvL>2K@Vvewwc+EE@tMU<Q
z8wb)hPNkQyAnRm3+#aR`--xLv#OaRWLAswbnjS1SqWdX@={BmXpf9a7qj~6~dJ(#<
z(UAVn7)p0EH_&IyCo}-qnMOc&W-@S+*#`vJr@$&!0is+*@G3V3oXlSan+rjxvbX@M
zCLwSKc?Ud4X@=ZZAvC1FKxY^yu}pJ|r8~F+e+(_MHbUmxPM~w_e#=zHczlHOnzf@#
zvz2vMa0u>p&eNXWuI}ER?rd*!Pk&#U_o^??tN3>LlKl<+N&fqO!B;zQ#<wm|VAz41
zUMUdrV!@6cEim5wDKNuzFfhT{FVM>Y2kP2)_(Qf*eilFGduu7>yN&Jg-av!im&i(w
z1|yy(@Lcy1NOx6+=DR+Dxa%mm$+;aY<~#|WbNm3CJE}l$?AxFL_8^>V+Xs)Z)kS_-
zKOmj0GtkR;2n*uJu@RP9mNVE{3xy`*rO<JBH{=*T8-9-OhCble!H4)KU>7c#z45TA
zS?U-|Ex+p;wo2=Z-BM4WfJ!25lrqQxxi9RL*Fejqdtg*Tz*}NFV4iru>>)bLmf~Wg
zqZly8iI?>K;siZkY@j!l3hBorubwIg^=)z)JxOV$?^Gt}h1EU!ZuPaEtXYh;T5ZG7
z1{*{5rN$k7w-GfmjA6#Xg5w$^+Zb#F%`~I7c~@_5w%5CwR|?V=*GigoRo3XFWEkz_
zHbzD1KV1<z>gV{gT3-&)RHm7_o}QwVpmxYth>KE>#A8v5eGpFPXY<qZc&=A2#&yj}
zVaI0IW)5ZbqmitY)RN3QWW`LJ1TuRO>aQz_5}D-_Q!-D)W0?)(OR~PlnrCl_70>Ar
zE1X*)Rx>XY8=UWt?Te+w=y>B;TVhJ=7<nb;p?&eG%>Uy5v3$HbKQFONh!8Kt8-!J!
zKvq-AQ*Bk2>a5+Oo9kPc(#GThKkdssG&}IifDS?nu&;<hGo^b_hP)DvD?O1WT4gjt
z_hBVXz;XsqEbSn`%ELa}VYIw`fTg1&)jHkz!M5ME-tpYs)TMZG-GzMfy!HIJzkOg<
zpiA&muw|%txNNvbL<~=eo{IdD)G^vC`E|5pO5LRYQVM)N^-$8c)PqUY3e8O#T&Qx=
zxI$N>Jqi_zrWG0<d6>E~+$nW!=xWN$pf#mKpkcDp-#6)+cUW|=XFvpWw+ZiZmJKy<
zfWa)=YyURuZeM?Vw70gUwx=wHyKAAJoCA?_jwA3|y9=IZTMzZJR)w14aj=Tz23Q2k
z0R8Ae(1M%+Rp=o|f;r$%zz)4Lt3Z#8bm)pc5jvqQgZ8K!piRm;=udfJLB9=wR*Kc3
z4FU%q;P-*ox!=HF1^YU{wgu9eYvz8ss0q=tjY-riT_#KDo5-13Yx0#ECabC@u}gu;
zkW!r7DGwxT%9qI>Qdw$`bdj1U^`v`9E~c~eAJbPl%}$p#atEY^{1<7uP)wdEPL#(>
zkL0m(ab={kKpCulS9)so)YkeswYu>`4V$Gk#vG*G0{+yNfJd|j&?)T~v`3o?|4-xL
z`dWV^OFfB9QL_<3LC}s0j_#0I<c)L>(ZqR3SS*H=7S6(z`3i6iZVOb0Wx+;FQ?Na~
z1Q<%)F;|hYafc{vxQTTAkHkDJ5kIajihodQ#chf;-awXP(<MB9S*#v6gn97}LM(om
zpO~=m0b)A$jG)=w<TQ36Wo2j3N0>QGH|9^)&Ftsi(>M6z^k-o;Er_#eyF7zVQs&Zy
z)wOg~J4Pe=bNaik(#MQS%usU_;{r}I#{htB1omSefe#Caxf%Bydd+o$r|_@g3PNv0
z6|#|U;!O0t6u>g&OBkvSveeds_ze9y{>WHsEdq46%>xVBv!Gmi`+|-*ht6~cEe%`~
zan<#}dfM%^_wjUcXr2YmHQvK6zwerRsqdC2*LT5N-M_&%!r#Zg!0!kw@E-^a^A`=4
z_b(3q=X)9)?o)yvz4lObFBF>M`5xTkJ{<hp)iZd@$p@}E<^@jL75{eI2>%l6W8Wma
zxNo>+x_2n{z%vmIde$KW-S^;AE)Q%vr$C*Z0(i)=9yIN(!QS>{@RH2}hHZ9mnzaP@
zAKnG5g|7uSTfTrSRs-sYZG;Y?GNdEF!<~>j@Lsq$LPB$q`UO<53=E;KfsSZlU<NwI
z+>Bl^_MmoS2RcAsgkI75ph;RWbiVotA(h3*2&DuPm;Zrh%kAM5`6KkNG#pwjao`|n
z3D`<X1)E4$fcDY=V2tDjc1RD+57Kh8l$>tPkxQFDWz1}^<QvzNcSd#fp>a~ZZj{k3
z83(kpMyh_o*r*>eEXEFFs<G1eR&Z==_Avf3D;k6;=v9F;`Y526z7Zg_6TlzZS>TI$
z5U8#$1g0u&f&H>+UX%VZ?})|BtHNeuA1~;$xn_DNcD|OvoKdr=x5_D!kY^Ks+$G_V
zs>c0dS}a*8nqPvil~<V?n)@4jET<>q$eBj3%-%zl&VEB?X9dZ7S%ZoDSvL~7S>+Su
zvoqrBvTMgfIUi#G<gAI!&+Q!>m{&X2Bfo5HNUTz9VZ3GRbYfyGMx2UOqKw!Kx?lVO
z^KU%JwN4D;Unh<VqlkRbP8KcL!yS~d)I_x$y+Y&YZTcf-k8zCMXYSy30^9k`V1}>;
zdMqx5HEBN5Seb=xQD<O=Hq$c2n1d_kV(T*SPg`+#i~SL@&oL1@?kt3#b3L+Na!;~f
z@`RkHyk}jzd`&%z{13hT1C9LUg9ie!pcLF5svWKq9um0|o)N7ZnVPgM(lhycq)>_@
zdM_m<+CJ42y^xw6(NlLviWaI9DN*QR*itAQew5ljG&*&8FrKm_&@N@0e`E48-`%7U
z-mlSyp6rOz{Wbi-`5<(_aWFW^J~PnT*4kgr>hneLkDjn)kGl*u+|>cC;#`jC_W$4~
zwnp$@*1w@Y@YYakOB^hL?FC_U1egUk03R3l@j1{5?g0>Roe6<U4H%rKW8fUk4$fDd
z;Bv(QZj&+al%xPp#T<Ya{sl@1hkyb6G~h7T5Rh5j?8%-n?=k(%#tdveqYoJ4=%z**
z{X@^D=IVE-BKk$@fp&wMsC}i1YkvBR+MnL7UZY2-m6-bKIVP;OWK|`f%~N)8UzP6s
zM<uzyrSgPq<(kMSn<ZGCC`Z&zN_n+{+C;T$-P9~?n0i&8q^>e%sOjc()dP%HZvtJ_
zL11~62L)v^bVm6G^;T-Yj64~hDer`7=>*(UIt-r`SHPyw1O82L!87=?PzKi&`j5Q}
zB5ZZA3bPd$K-1=Cs-gLYTxb*`Z|hSCP5Y3ju60U`Qa{G`C^O>!$(7;(*@$(MvSK^L
z>{zY<$A1&*#rN`m#vQy8U%<^xpj-;Ek$px~VK<SVnDNv)rWf6V>CBX6y0KPfAji{_
zd4gUkF!X*AV6I3}=DA#t`Kk<Ka@1{1w)TekqDR=r#!&W@d5v8K6y*kio46WKkcZ*J
z{8PA%um#bD{^(t?1h!L3U`yq5mPN`;e69MM^_Yg)-sn$kHgk==70}7C8gw~7Ll2x4
zkeRM|XleIr?76!LKGrkV3VF}kR(c7$-IwN^<7?&m<s0Iz>;J<u-#^BC$)E1~=r7~X
z_2>A1`u_~v^Ctz@`&S2B`g4L=z7nA^z80Y`-VUL<-uj`19#811`&ls4H8p5DtwE1-
zc_8YL{mJ%T{$$$;Uy_yg7Q$<IOIgNw>R|iaJ<(UL#R%ZK16OhS-~o=w&{}&8yknaT
z%2q#E#d;qYjjsfbSOx*P*#G}!uNg27Z4X>T1_36#0B8pv19m{4fCT6Tn}BV>ZNO5H
zH*bUKrV3s%DnqHpAZUfYs=z5vLw{)hLWKGi`a{iyR3!)cQ~3&&QT~OV$rqq`@>ZyU
zJQc#_PSAI$H1t3+!0XZ*@V0amd@IcZ1*r#ET&@HTka6&^{0ore>p&OfFW`bQ11PNa
z1lFjv07MG_b2QGBw3p^&J;S8*1?EVjyZOT?X{MXBaofCTlmaFhi-1zb2jGRC29DEv
zfrhpaoTqIAS#=lKQ(X%lSH^;jToWuS=L6}|3Sgob0u~Ev%|Cg`Si^NNR<RrP#mqBp
z4y~%ws1$Wlfn`r3TFJ8#>C(D*fAMT=gzzhWGG8)(0XHjeBb$?Zk{OfxlD6lX)SaAK
z)aIPo<f5Dx#Oj>t#JQY92|lM>qD$`0_><fb@qT$l<9I$Ddy@Ymwl{VswkrN8wj%L8
zww18Q&yp?U@2K^0go(#%vgwJj+@r)nz76q3cu)AG@nkdEPfb?tQhU{T^kc0pL+QoY
zplRo70ubLFv<cIoqT*(_opb?NBELqTD<oE6U-)Xhs1-D8+2#PP><HA&u^#T{EQ$7a
zUB`O3yW_1qgtdxyzTM^XIKTV0xDNXRo&kZSURyBkI~;5rs1{lhJRQ0eiiY2W$A>>f
zPK6&tKZUm?k>L)>dEsBlPs6=awuaB9v<>H{WQX9?Q6Vkmzu>!+s=-Yu(*re9j`^=7
zzwnhz&hpMkB0ZO)l>1vG*TscDJB83QM?84T{w{FIcF}*{y4H6EAMAZ>sqV?aAh#QP
z=4^@XaI8j#+ke3|ZLML<dL8;;X#$<b-hnI7Y2ZktB-j@I2~>kJfHd%bfFI}vIL+FC
z-6#rpbq`QjgMezPWOh;rbDErK9+p0uKg6eI3Guo)Nyspt@*B)*{B-jm*UK!y)iTes
zUb8bBGXVCMaf8`vtYyX<lbIIANT#qcfsyqU%p3gzb5^IBb$UZ~qQ0H&uA^K%eJ)p2
zM|qpRg=e*D!dLBs@JL%Kp4aM0yEI-}uAP%7Y7>>-S~azi#;8TK)0(M{)IX>x#&Pw5
zF-;w5)=>?URu%$#6a{Fi3<N*P7r<e%2xd#gp*~Ur=$_aFDlS%o{wH{#NBl?7$FBps
zaW%nB>|@{!(-H7956pDBs=1w7XJnH(dR?-nzLl7(LBw5kM#7?+@z%<g_$v9g_)AHP
zB}@OtMu}%)*M*D%F1Q+-$N!8`T;cdAZgQMrzs47^0}^Shn0U(UA(k@z$&O5Usu*LX
z5r(5#I>r!mf@Nu*Ll{&@W1?bnrlK^3X(pdwdMhL|POZz%)7G$Sb&}m_^x+PhZ@H5|
zU;Y9}^H-ov!as0p@fzZguA<+hi`Z@Xq~)w~06(K{v|iWd+1}~H?6T3yQ5-1h><Mzt
zjnH-1+XADGpfx@Hu%Dj2mWAG5c*K`x+w1FTPw_8vEcc&w=KG(z>IS~JX9m7`js%{2
z?*@+ho(HD*?+3~Rjt1@prU%*vYXmL_zxeH;iT>sx);BCP$Tu!@+uJ|n_0|Y=@o>RK
z?w!G7uBySu&NG4Uj<f)6pW_GY&wMVM*Oy{#<E@1M&(qR!&^;V`<XVTuoc9r{(}I+6
zbc37N&p^N1QlQz^P2f(v5O~9K5%`7m1?-p)sEPh(4nvNZ+u$YUD`>pwfd-ph!NKMZ
zV3e6}&M+I9tIh4kQB&0)m_zhj^Oa@=T5Dy2hiV6)gE}7gqO1lcDaQbxau@hV{sc^r
zNuZJpf|BF~pGk$lGg4V_k5nD}OKJcfkeY&jORd0<Qd<y{+kuVbHsAue1^8TU1eR24
zfQyt;U`z>ty;KnVSIq&MX%B&$+CiX!J{!2AcLZu1sla(7+pJ(7HusqWO*arQrvlfF
zH$Z=*G|1`W!MXZj5YS(OleK*Cvr2<?)Esby@)&#}ZwKvi53qp*fy2b@z)~R%*u!r&
zFLIjki0y2AV7BV{^lQzaU@b(IRjZP%m7c^9c}ZfXbR)i6w8Zxd{bGOfck<tG_3|0^
zeqNXzn%A63%9~AR=H8(0=enuuxueM!x$g-zH=Ssd_dT&KZ%)FVUm>v}KOV0fyB7Z$
z+Y>(=-w>aj*b*O19FO-TU&MP;aAFwUEHRtenApLxiJM$MB9DJZ1jXKDb16YimseBA
zl?L=rRil#%*tDy0kX>bN;O+ryc>~-j)PesNCm>nUVKhzohz(P1_!X_DHEQ&+Eih-=
z8DPC*G_=PVgAcmKpnKgkw$?KlpX}wWZG4mLet*pI)ZfQ7GjPit3Z{7X2S@n|g^u`_
zhTaFhgqUDjSPXRvXNO0HuSdp*{}&w)E|gR+d?*PDdy~(H1|)Y5ZAktQJeb@rxIOt~
zU{W#|sFK{&|2Ao+Z$Q!k@9XGYPvz(r_lyYTIvF;cuR~U6elX-<14Zq$znU$_*V_8V
zI~4!hv%>P1`!Y7eMWN}=YG@_LTm&!R)1TIc@HPAtw8K&!nu%Qm`=jl^mPi7q4sQcW
zL!Aop)CZ&iU(B-RX|uMm!t9`rHpgjQ%}r`U^S)BS1eKy@3ps3Vl3XS!TFh=DVBQxL
zqnW@N&v?QZ#^)JMKFhexeK(eHUyR<|2crS^&Zxw_HmYzhjHcW(V=z}>p4>g-DR;w&
z@Ry7U{0ZYVzt?CYY%s10^Noh$XycLC#po^7G-xSktd=Rgyz)SQs%+E8sl#-qRzW|e
z5n5CIi1tqJr42L??T2wd?P1neZ<<e(B%q@*40tT>1?tPsfP+#lfJ!vbU(5qe3C{tQ
z-w!n9hXG5tWZ(gN)5O_yvkmjf_>=B#yrJ&vg{cbqL~^C}i1?|NBWkGI5{ndX;-$PT
zo?5`8qop^otKzDdOYC020ySfg_)@Vde1+J4u4SwcH#K&E{X15Z^~7H>v*NQDHC~1J
zGr`eSh&yx+v70_lE~DpBv*|(f9J&*;l5WlJr`vE3=&n3Z4;Csg)5QtQI_WxdQjW0C
zmDwz<5^PW(&DApmZjiZ#Uk=m|PJ{Wvf6#H!gl9>`&^~ettc5bn(ny_$H`O*<yXpsR
z<BSvbb><1jKfnPe39fgQgeSWPA#FUn(V+JW_R5=tFYu*Xi~Cm;Oy8^aI)O~bi2&^K
z1f%Xj!6Kf0!DR3AAmYmpe)iG9z5eWA=fHztJg_nNN3ebHOOOjx2`vwd4><xGLv#Fl
zLqB|*Lp6L;LbJRLLVtURV7_~0(B}>YtGoUTbaJx(5stS0+4fDo4Yt?b46DU^53lO^
zW$Es=TBf*aU~8PC&_j+4<f@&4pV^wjKdcA-|2q@NiZ21vELN~CwhickRtKgdU(Ma{
zdh;>V#Z<r)vnog%<AE2(Me}b1GLIVFjJ?JgeXkMJ4;%9eT$@*K8<W(xhOESl<qBdJ
zQwo{)<$C56xwlzCo?+6`HuIKr#r#Y9WG<3)bDER_Op_V_^QC^kR_TAh6=@5Q^M4$j
zb(GZB|Mzb^8Mj^Bio3hJ>le4;UfkV_JG8jFdx7Ha4lNXSb|mh(_sQ=$dp;-GB$LTb
zUh|eeW=B5?av3*3Pvc*3(D)88Qv}^j4O}r*P~1v^jn+pHvLAqX_HlqYE5Jl&Ads9&
zU=YN>J2#QGbanm=DuA+ryKoff3$Fm#p|A-~HB7SmV7=_A*iCC5mdBcbjWP#g=Zw0T
zp?k2>`X$gy>kF2s7CNcSK(AySI#LgqOFHM&5j{>np{2c?Uu0cOT{e{@Z<J4FGo~f#
z=}+TBw2JZ7>fVgYN)gxBFZ|3e_xjmW%KUSu`0<A*T>Q~QIP&8lf9gjL{_&4>DeyCY
zs@~6w$&EkzCp{Utl8Z9FCGy12CvL@eB&H|UC7L8RC-S6@B`E$`Lg&e(EYwL_;^L%7
z{+7(EG*8u0ucQWO_4!r$3;u>NPH@bEVnzF_IMz8KorcS03r$sOViVNa_-ySKu|fAz
zmyKq$WX@ws+n3n!j=<f9*}T7i>b@CRJO4MlSD+QyCwP|X6w1%k2`^!DL}czqq@8zH
z^r)|`%O@Xe7Mzr}z;*1i;V$W~B8Sp{L=)-XVp%dhN-LddXL|Wey))&{#AODV{>XeY
z-JfN0`oJtX)AwgNl=du3iL_5yHpO0MLD3Ug+C(R0SsTfp<yrVlW-?qMbBWNFOs#@i
z`mjKa^o9O$X}f&eVwb&_qi;MfA~yFaoSXX^YQlaFPGH^y4%3hPN$RSvJax=Fhur3Q
zM=a;+5;NGN_$a0@-jCkz>S<-H6Zr^qCPsiBcn&ZGdxoZim1sTcf-b-!=(~fXtj>Gb
z!M+YRSVv%nxdqlUSHa!JVi+^#!^QeS7}b};9olMGN81b&>H)Y@Jqrh^cVP|n4a}+X
z(5I4!Q8S^CS{M~jtD?qgQ#4-fgpRAdk)aMkO|;+84s9@E^xkNs-T{5m>!Z#_arD9n
zqPFG__{_Wj+gl6aKUQn^I)d=2ecfs5jBw67=}tj-)Sd_H*ze$Nt0-z@4MOM5ji|7B
z87(sYLErRusG9x~&DSoW$Lcy1bDy!Tk{hj%@52Yu5a^WvY$X2f%oj-K0YA>p%zv^5
zq#9e7lY7nlNzz=A=x%rtr}U+9zn(YVU%Q%dMIDv#i&{Qou0p%a{`}cXe*g20^y6m_
ziOfidWi#fAV={_}cQgJK%Eea;hvHp@Dv6T9i$qYEm9+R;DVg{32LFlYgquQs;gr~1
zI3i6Kj>#8=3koMbQG1AS?W*WE%1Y(UBT`SRioDW(EZ=m-C<qo(D}nFoDD0$m7+<Pq
z5Mzu2)Bv*^-QQZy40jow>HOd}LZA0CD&YGGD)_VF)dMYvO2Ii~fzWx13(NF>;iBx;
zNO!Jdbdd)}PkL9yUidPnCH)K1%)rkyGgu)#9vYVZD7+?pTVzjq@956-P;7bnzSw~D
zl4-@$H>bT%)6=G>RZ9=04NPAeo0blvQ`3Kq_D??^shn<w^|VTEdiX6=C2f81a_nlL
zV(g25Q<V1Wk^H{;k-FY_;ohDrq1l`i+|OnYK4)qND5i(M8a>H3ky_=wOz!uD$Sd3c
z;w5_rPcap6mN|gsql;s8sWYG-*$ONsM06J4gc5F}FM!2RKUcL5qoWYP#jc)?fG3=8
zFuT(lF1DLM#%>H3SS?|?)fpZ%2g2s&6lfZ&;Su8~9AP|!H4Fi!8)?YUtD+xzFPFIm
zE-goquK$CghJz{_xxhf97T9id2Vab_pp>})%rw`6SLRkw$=U(dTbluHuLJ|_Y2caN
z2h?<Gfjv$Pgy07>25v(yU>8&xv1kt34<DfhFbtkKjX+0d40vp>2DR-yV3&0e;O?2)
znv1{|qaXOJmjb!<1nQuzLkrc)=$vvJewUlWH2JzyS1Rp{5?9(gg}C(}U(?FMFEG2M
z9vgd-QNv2K(K{uUYggls)GG0idLg5&(k5fQtp5Bi?fY3>8u4?j*z_k5EB+iVl>eE*
zH~2Y{AM}&txBlFo`uVd(s$mA3I+^hxSw6l!c{4sIIWRFMnLRlw`CoE+@<3``avpyv
zIYLmA{lv<tzS8{EQ2ASGhVnmtqxyiqtaT9LdP>M?t`<93O{7(JKz`x8le40WN)K>I
z-GlAb1pJ6znY?C9r#_iiXuplIwVW#4WH{J!0j>5@*hya-{GNY1@iHKj&w~x<o1s6L
z{o&8-v`8^e{pc{S8QtgG7<=O{nMMT<r{xZ1PcIQ3lU^cnE<Hyyo^C`vnXbj6nI@%q
zGG$MXr|(HWm!31z*z^gRa;0C&^j8|6sdgHh`E1OSIe$#aG&_1X(?5}gnes#`W$F=r
zoW3^HG5ucfQJN8`nD$FxX{?F=RdkpyOLVojdE{@;`0zJwLny|b4mM!#2c|G@{paYo
z573&oDTO?nN!DW#A?{ZqD|;W$&(z1u(l@aBRBNm&`4x;MW`i|&QSdkR7X1KgQ4Y`r
zbw&lzMrgtx&NEoeIR)3+n<286z@gSG_`~J%H+O7f7F=U2g4K+5Fs|>1d-Y3jl>QHF
zsEe?m?ng1b2=eI-P{?IAw>}kB(bu5v`a!f<zl5&oj}T@2hngE7(0bz|;@$No<|DMn
zJdZeQ8yaFwM~|%bsGOY-t+9VV&E5&yI-THt2SCT!>NJ2AoO$qyeFfIHd3fH6q2g9C
zw92f6B%>l~ViZQ}^&tAHeS<}{WAHb11U#VRa~Zwu<dge2Jtf87B2KYC2$q#k7-9X!
ze>DG2H8-QF6UL}yCgVT1L$yx4)}F+xYdzvyRhYr4`!mKU{W8AFWiz_UfsEIZ<?5*U
zGbM5vzl%jP3X0t`o(kJD<_mg86QM^uUHCVi;(H{X@@C>Xzdd=G@0_~B=i=Y-0+09y
zLQ&zg*jqRt?H2aQns8M4pLj(*FTU2wNVa}b%4gP<TU+nt+4el;oKr(pAW}<#d)jZ<
zZv6nh$oNT2GV@bot?u-Adj&Jwxx)Sde{zSB*Lx4-^(C>={uog{P=zcO>_ue?&8OAS
zLFRh+0XsMHldI@9@R!k`uU{<Y{~QYjTBf1Ep0tm_MB3?4uJlQ6(kvBekp3i6J-uf%
zPx`y4nASLUENxS)SK9j+Nb{#HjTKA_#)_rQh~`N99<gI}BR6BK!qa2_g$l>Ahpt51
z1)D_Y2W~{p_{&DV`__bGzEr5Tw?=4~XHIYvcP;Rkb^Hul#$Si&<(o+_@!q2T@?@eu
za6?EBcbh23mLR$@8}Rvb3_ne+!hVuDv0UU)(1~ac*5WF9hwVm1upVeK$ctX06s(M{
zxao8=jKG<2q4OK`Ilsa+c1Kv)?f`FCUEvU`AIxEmgD=fRaGkjm4m7X8I_5{1-=t8~
zEQGvfOXN4lpe*JFRMK_g=H_QK#w5XZ^A}e?tAor|ThP_&3wBr|fM|^cb?wn$jXeZp
z*j+(wrylsj$p_+&gKEILXc1h7Uc#m*J91n_-40ivTJREj>U>3A9ROb0A<)uJ1AkjV
zkjsK-lKBojG)|!G#w65FuYmSyU*QjRKFqKF0=p}RoImB#&J*c?9guR^&Bb}vav^TM
z;+vU;_&vt76foW=JLpZ4hqQ|cN~@LlRlOhoTNxP7u0-QA<hvPhX;nryX>i6%@qZbe
z#AX?vh4vW}gb^8;g-sb(`8OF8`C{>E{Gzy*cj8}DQxo@7f#l`XL3cW*9;9OY_tby9
zpFbkh;+Kij_({?|euP{=7_KZ5CaOSOq|Fp}>0#-naZpN`?d2S{Uuo$)Qf9*~>UlI-
zQ$a7iG~Uh_Otdz4knOF1slK+CndDSv|AfDCXV6s7Td>;8;M;uVh@Ji(<i@}vYF_XZ
z-7oZ(sSpO77S8F}8!7K?60Pg|H`>tOF;+WpEml03J<T8Lo%S~LN7|O~Uumr)H`4gX
zm9(kR18GKdR$7l(leCjDEKP~+j{TBWBUUx-R<u@Hy=d9A<B>>OrpVja$nd(@wNU+7
zF!aIYbXatCfR8-(_lbD@_ri62MZ*)l(?dr+_k%yVa4<jDGSG*e@888-@FnP!w+fxp
zyNGJy`AUxA8jxGqL&QBMCt=X5@j`SO-kI8jEh9@|cZj=yBZh(IcsB3{_5^(e%TRUD
z9&JGR5RMEu6uy9;oO7^;vkQK)*TT{E3h1?$!GqRn*wNYq{ni0^&%6j%n=jx1lZOpV
zA1YxMLAlK)D7!fb{bDXarOdskp?MSaH$R~zrs<~001(WapqNz@47N&xL+&V65m3X<
z>Gmhi_52jd>D)yFoQ>$PGXP0WVN@1=aIa+<+z!jZNARJex>poK-|a%EpIsKcw#uN!
zRv~oQjJWR(5%x81z|(GWCiUj9rG~>b>VD^y(!|NBe6V}V!|lD2YKh`FtA;3;ON9aE
zH~zIzpKoI9Po37Yr1I%YlS{Qw(pEPnhNu-1@02(3cFKzQBe`w7wVXfxkHp0LNp6`G
z?Tn3LAl^_c9XEwO@l(RC_!Pm2w-mZ2iV6=BQK4m$7TzT(VM;0>6yoy<@A>+|4q=2a
zM%*v7mQq3`xt3T&*(l~$DXFkFQL3QZQd47r+|SIX{BGS*4%w5`f1Ju1gD|~3c&7Km
zjv8z6HRdg1uBDTc?R@kErztZP{>IKl^SG5@y=NP?%X<Rf<GV#{_P-(*1me`dphZ^+
zQ7jDkxZ`1;r(=ZjCL)S=MD#!3=jdsF{n+n;Rk0?)$1xPNV>?5!w5s83X;;Fbw2Bca
zwk~obmWccwD;}*B>l}R@9UC1Uoe|X{6QUy{J)<APm7<NpD6%tjI${QUMj8iEctv1Y
z_@zG<&g@?j>ga>P)!x3rC!TA8kS9l=B{$T+j6Lgn&fvbBOat#=dY<Pzb&E@*Xl@Ky
zpM6ElW*QRL=<_&3SHYW77qOLO3+z4d6_g_8fH`;x@B#aPYGWJF9?%`7gF<K#vLNdw
z!Ugazm=3qWz0OKl&shY2*z@6PdkJjnGV8JTz^B%ExYK$GXIK*K=eloOs{(3fbw<ry
z-)?8^L<6jQXokh3tyTowc6rpSR-lMI0Q9z}fKB#d@XlTX@;K{2UuO;2=PUv#XCf#E
ze+A=UHE<dRfdpTpVs5kRj@qCF2*M+13w(eo!B6OhlR`}#9$mA)qYCzOw8{DlA#(}p
zWOhaejBIX7egbRjQ{WseC%mDabSSm1Q&+id&y*Y5m!%69DV4ICi0jSO0&afg`y18y
zJNm{{5uHjc)W#*_s+?%0PD-3o!iikUiTF~vZya|Soh(Tij`-O1`U@GE#d8_Qgj*Ty
zg>M;z5RL!Mw~kNaH^*DJT3VPNoCxyY5*R-^3HU(D$DdB+<%jSM`4Yl79to%TS0W}{
zmO8pU>b!7RDJh;*4~bW`D$;BHsbm-v<eXM9rIDSXjB`$^d*K4@EgGapuy#gcys<f*
zsAnA~8{40$woZuY11qrOQAchW7~$EEP50i!fA@VRX88d%I*^s_6fDh@3e{tcP-~ad
zj-Kw3_Fg^G%r_%i$*)H<1-i#F0!L#<gJNtzC{J2ATs>`XxItRUNcFUxk-TYKREu?q
z{vBH%9TB@7%@q3<Jrb3oRilaMnaJ~K@yMa*AK~#)EmS7jD)ct8H8?qv2>2uA0xQGg
z{QmGM-_(%e{TeLitsfle*%&y=CH*2>#b2JC;hW4{_1>llZx*_iXBah^yG#DXmLz3n
zEm4~B62s})_)&_+6>=F?jm(S9CoX_jcrQ>24}wM54U`14QAf}O-A0*FZP))V!uzlx
zJPuztTj5Y=H4He*;a~PDIK<uni`e@h?{a#{dIr~7DLB;%putv2)YEE%eznG;{?>Xl
z*1CiiTc6PZiv*9XUw~!RbUEz^y4!=nANC}-0nG+}XC7$g%m#~`3E-~NA8@c4s1FN)
zsn9_u;7#-e&O;$o6IDPNupL?g2crUTB0A+vN7bCk=!`uK6}LO0wN^z0T{Z7wzJ$k(
zKOt?jfdA7iXOp(Y`Jz^HimDIoVM=HFxcuHSr5;ut>0fiH*wTD2TsA5SrHs}5Cf!JR
z_5P{x+S}w8wMVj@8c*C(W+$pCMG~jvH}MMcrubRuw|E1oN&FwNVtk}nCY~nNh+h#p
z#m5V?<CTQVaYFDX{^bWG&hd{EyZI)`&HR((R=!{ADDUC#^JjR8A14$PYK#4aH0gw(
zOMdZ-JW716d=+1-{iH9NB&qr$IcSzrN?IS3w)Q4<veQ@F3oHKrF3MoKQ4#-Q4j^7x
zYseS&W$K0Vjs6dE>{pbJ6G0^p!s>d1L_J?lvbw(*RVYx2W`i}E*TFjMmQYQuUAThB
z3g`7MkFdV<=qKNT=rMmrbabF<tWa=5>``#1%j(6L5V{!~7`_mD8r~5r8kray6{!{5
z7crubB3q;1BGsbt$eqZCNVCYz$kp)1NU3nY$eK{@h!}hjZX6sM{xd*?Kl_)4iur?~
z;l8=S6J9x>dAbBDdCvJKacTZb>>wY*p7XY0Snn44e;%1y$2Frqvir!wY>*tmOd`(G
zNt~ny;%%rnwv8N%X@m!BN$dg#@TMS$n`k_C#P$85s4FOsULn%eu-EWAJO?MadYTTG
z!!vGk>F3OG`~Q6S%4Kz%y&aCS&%oyPGg#UdU`{)VB6dX-w!5Ls_8gSoK8UKgO4r`D
z(Re#I*lO1W_uU?k?CGGa^CuYM><7D?zrY9QBFF(Rf==)>SPl1p2XGmn&@fOD)d&4h
z*i9nO(Q&jGJwjE{7xW&AXd+Y*2L-g$`GkDVJv80khcc{bsHN2y9WXgWn3v%Hj3IEd
z9)jPreNHj0nlntjWgk<T+KPP3sw~&Crb#Ev+hSfbleokfDCqiC{#QL8e^XnWDz2gA
z8g+6KsAO`evL^9Xu8{bj{4suCS|4vN^@%?dtHyhazqnqXIlfNF5w9zhjw^io_;G%I
zd?J58-ki^sD9X=B#CS2m@gtHR9;7n!8&YNX27D(T@{9N@!UKM#m|YktjT1V{?}Zjh
zd$F1NN^GYMlKSb4JjFOFZ#4TWSFA#6+*Z_V@SfHb9n>d-KaIoK0`mht%ZiY5>{`?U
zX9&F-E@!r*qwH~Thr5Bj^8AZ`@WzR^K8Jkh_t7T;nV3bv9BhYB4lWu_^IQm%-p-M@
z_iN;quSayP|4y`9AWtkU*gtkLxGvTybUyYa^dQzNd@uGOe9q-`ZES3$f9z-^U+i_{
zX;g`fb#JmKYD88>K1V{4OOe^(C6QF9MWl5Ij~oo{3uD20;Z}j?q4oYQp-;Y-!9u<!
z!6DvLfkU2b0fC#~FV8*pO=9!=t}$c0A?C8D2krBmq}p;pY6Cl*{LH*0iZS(w@$^~z
z8dVXGQh#Ip$wt@(;w{KROa>G2Jm5X{6g9;bqVukvRsd1-7y1lqq4V&e+o$@&`H+PZ
z;ZbK4?Bh;uXQG=|e}~6h|DSIkfrIRO@PBp&tY`aCO}h-LV|PML?dhniy$6l9AEFhu
zf==3*!CSi$@Hp*36=yj3&6xwXI;+7y&SnsV+du=j2~2`3z+pHAyoWu2A60Q#^?<JE
zDVl(mqUEl_Z$&@hJ~R*RM>*hjw8vS2ia6uZcDo&l+6B=RON8&tW3Y-j2re};!w>p-
zr-a_s8Lx@<MRlf4s~)?#ve;TBd#yLpY_qUr8WY7K#zWz?URY?NFW}E;a;kvVFSSPf
zkfhcA$%%@V5agAKA#(LZLXzSmrPFaJ&WkS>2gHkt?c)!G|HUV`{l0`SDIVu{#ZU6@
z;`8~!iGD7pE%_gbdi<}+`uyi)8-9Fh2%nW-!QbYu^K%7CXeG803P=Y8PL7JIJWot2
zUP(~bO14%`4jTW-Ma(5iQ>(c;!cNyVI6t&I@P=->iKZ~N&g_gYu@(^X?Z3zc&PQqq
zWSP~d5W5-F;r3x|J*V+*-m64c-+i*R{~1*!@GqSne93$XK4N!<E^{5i`#pMip?5)~
zr_UEH=ARVJ@c$d#6etj@6YLp#6<iSO71|bi71|T48{QP#6rL6P9_|>+8_5-G5qTLM
z9GMXv7s(YJ6FCy;6R8lXA2}M%8p#*_5MCTw7fuEng&PHbhBgFdhT{HEsG@&maGEa=
zyzZSD@Oo4JmY#P0RoqG6D>mf&g&pAijrrU2Hy!W<>0h~i)FJj737JA<3uXnenZ^l`
znus@|Ol&JT19ONl)}7b~uHsEV30y{--QJ&u^+YQ`ev}FDa0j~PcK@yLIs6??fTLkS
zI1s*Z`oay)fd9{Hd1odJI)Av8;wXG$KY)*H9^SKK=%HO1{cHC`KkfMlbB>}M&OfMz
z+u!>*xxf;qCOGGG1wWk8AS?VGG>5BQkKX`}xbq&aa`~JCDxsmE2Wk#xqP$=;647aN
z3f)3O(G!%*RoCnA5$Xl6BE>m~ra4Ox?(|2KTqRFh2zGLl$OUsW%wgt%<BVI*eZ9Yv
zM|bQI+ESO*Y_?zBVs%#XSbJT?vZQpgrL@S{D<Yj1N9couPug?7z1D!gtzJ%5Q|qOU
zE02@KltIb8axhs$KA$)$O-$5~>Ls3tSrfmBFdh_z_!&Wr4-v3LVIg-y;F~8d^YarM
z`Dck)e6i$cepPY=?@3MKm!_8Sx%s2~W&RyMOvok_7JCVT_?K`^$|i1?=ZlLKN}8cA
zk)~;R<+=Jbd6h9j*=rV3uUZ-ENBb|0hKuxKXpqqcv^FPV)vfJ#Df>22$Vrm<VSvtu
ziZBI0ZMF#3iYtM4@RTLmdn=GleHE#4{&I9AP>lH;$ieOoa$L7ik|V;mJ?q2ky}v|y
z`PN2q`cdS8zg=`hV11McK8!94icxQfj*SbkvF9N>nm_zL+CO|Mx;8u|`ggcO^hx+r
z<W+cP<Y_ol<YIVBcvCoccv$$4Q28(w;zPd$H;3*8>Vygf-UO%mhXo(`v_Nj(xWI2-
z-v5`Um!I%F^tIwD_%^cZycvw)sm`?Xte_8bKPirDMD=j}|1Ty?hM4KZU|PX%Qp53l
zl!(nCCu2W}Al8Q111`F(mcdoD58I0hV|~yeP!LrHvfEp3!GUNe^r8juG#u-aItb>6
zec=zMKRoFSgA1I=u)nheHgk5u%Fabt!g&h|I}jFg@}TlgeN@*Oh&nin(QxMoTI@VU
zha3?-aeTmV@`F6E3TOfwgVC@J*a+K$>+UiGHUt4w9+W^?TxHi$PjnBBL~GDg)B(*#
zK{N|pgp*JoH>YCoe`vK+4&`=yXovk4=COCdHCBH}S$W`Z=2PdfF~uom<Z%}17wxZF
zd%L>!-CC)RvA!#gSyP!|{vi{lAk8pZNREC~9H(a%MQye)Skw3~>PWt)s;1s5GgCd3
z%&AZEndBh3cT$tGCFe_T6M3XViA&;wL_cwKA}S6}+!lr>eivpYS_s<{xrE0FlMf`{
z@|}|R`Qypke74j>etGIWpT;A8H(yw2AoLU@VW)6VRD@Ad8?nB8R?MT6mN@l<WU94g
zMSCS{`ZNWYCDoAiL(Oj=&}us4^=`1aF&PyyHv*q^9+Rzi_(vNO&z-E)U09C3iW)NK
zK|A&|)|ESsckvt`T6wpV)qH<Y+5NxMf`0^aHqf3O6D-T+4Y8gpp{JfU;Wgf;;g-I7
z5zDtLveB=(4X9G|d|*(ta&TdEPjF+@6WS8(9$FdQ5gHf$FVsBBgwvw=!cQXQTuv*7
z^G8aAFN8CPn}wCo<Iv4e^U#vem0*)l$)FWn6WA8i{I!E^{VxLte0>7A@29_=caVR#
z=aWz8I{KP$H@zF!GG3lp=V`zI&lb8j=TJA;Zd5_`DmkAiNyh2TL`ymoagthv=b$p<
zzmwZBm8gIXBp!ix_$bf?&jH?Gk5ON25t2YlG!JA&`9KQZMt9&CbPyIof54A!4%h)_
zz@hHcf^%S2xD>jb1%7sp!6(iwc-#31ue+??bh4v|PF3`u(-kG0NeG8)Q8suQRe+CC
zTlgJ~hBjISJ>Vpaf#)!b+wU`h5DJ1K2!J{$1GPi<Q6IDu4MStmXjBW0LdfOw6zt}5
z+8B9Y3D^65u2O$=Rs1MyV^4rjttzmYB|8_*-A+lft+Up!Y^1NZd+QbKYuY_4uhz|)
zsb-iTlrd&)#WJ?Z(+o-m#t><S{*Q>XM&dN>f`HVj!gTclPpD1!dCI#~NST~kFXu}Y
zlV2n+ODmIIq^?O@EScOc29s?>C&7qn;=14@77C$c7ol{rtk5%=E^JH^!jGiI*GVCM
zPs%Uk;0p<x`4&P+VTN!|xG0PfJz^25rx=&6iD%@p(lX_sG*T@qch#=Tt@NHsGlNx|
zn}4b8tdUwTySzTy0meM|#Mq4XnJ2+~>pnKr{(^UKOrj19P-RedIuFRtM6kjvi5K8x
zJe%he!FV5#-@T`(OTKmVBL8@%S)e5gg1NYz!EaoR&@RudP*-o=Fy}iQ-s|&6YWcfH
z?)uk98VBw~&IjU=yg?M15+tH`gGR&~`VgrVIv?pDS{RuXY8hD(q9Ut8N5YFjt-|9%
zKSCWtV?)J4R!|F02%Zim14Dz|1KEPN{g(nI{9Oafe4;<)o#AihW&OK63w^-D`8shk
zy~kP26J!T^hA{tf_vwaQN%{o4hRVePY9TY6)afroU%ET-lzM~Lr~2Y&NC7KF&cO~4
zxv`?e6>tO}0;=FS!ENjn`W0J`EYJsS1m#de*OfICheyy;I22uiW!**&Ty~$r{qP_>
z441&a;23xf_I9_lhhJfHXu+m1f||p^E|;~@udovu42Pr1a4uR3|3us29&{R>MEBr%
zw;^3dGQ5arHyNj+eJC&b0~JS;P&w4e?fRuqS>$T8n?rJ=+0c)wLIq|xFW^e&C@kkT
zy!&<s*u%~R6V^v(l(ofC%nr^7lXbouC+u!U7yG{MSXK3P)^4q=71eH=Q`FApcjc$i
zP8n-lm2so2yjb5YrRzDQP1<^~pq5=crtT1GsAYw_%5A=@GJsFXL4KZmDV0y2n7S_2
zNDYzvsm#*1<Q?%|a<=$)vc7mG84#}~-wFRF&k9y@gHR+jU+9;bE*wqG6j*+VFofSJ
zyy0&OT?AS9A`};=h{MI)(k1bslwF!H&y<=gvXosNF3YMaKiB3d7xldALF0zH!yKh;
zu?p#1>@WIGXP<EZjy6xBde#My)xL$v_EY?^^Dl7>z9m<o_tY5hn(l}_W~$+r*c`+j
z&L-x0{vo@04^xGGGwGkcmdqA^I@=`hg8d#?!i^8s@L0jmo)Mv$-dCYazVhL%z8T@%
z{!8K2em)HSu}HT-k;suinTQrB5h)kU9_br|;RV5G;T^%v;bXz>;gi8=_)zddXk)NP
zXnIf&b`H)D77a#%LSS{^a3CD$8<^*h229^s{{UZS|1+=XtLpvTx6PC0V?CR_L%4k2
z$LuaoMYe!v6SIwDn4H{5dM*2&3bSpf`OGbnVCs-l=*xsb)hEVNk8q9bflne;j38HG
zONdHXPU0gtj;{jE@a7-`3xH+VOH>uxiGG3!Xd7sYx`PTR56Fq)$cxUoI=2+5a1at<
z6L(4>4Q6w>@*>vV6La_EK@u$K?y2Fj*bEu4v%9@7V%*FbL}O59w<+a8<53}3F^i)?
zs0`}j^4ZW`7DpwK4;4gT-1GefeP|ZcVI%k!((n?z;B0_HozXC}(-8h`$6zP>wIf=a
zoLN>ECv3%>wdPGbr#aT%Y~;3c7&omy^#N8$XRP_!b`xk-&2j2uBc=2;`YVS1QC^_`
zDreQ-O9!;RQgtmUK2j%(z15&-D*J`yN>ibjBJ+3UUHnk_S3XV7!(WmTsgcsvR1s-=
z>YKPEwNIRt8s|<^acQc6xI5($@1``tP9=qkd{UUs8^UwmFIE(ai93b%Voq^^xI?@x
zmX{*ZW2v7sUcM$3R*K7?mCf>AHM=rK+om+pOREKqJF3SVq={x&e{WsZAKU+zy33iD
zpkkgye_O}EJo_Nl!P$)$f}02vt|T9#+0=G0oF0dDV4C8UTvo$eg80b&Meg%Vrv`cJ
z(z$&YbI11=Gsr)H1%U`RKX8(xgDpH`gYP`Ag9E%}Ltnj9LtTC6L$`dXP*Hy@Jkwty
z{McVL91BzrHxHBvPYz@YZwXkTvw?@9JAt*K$AQkF`+;!iQs826U!ZSret-z}46F~7
z4ipXO{*(UG{;K|A{&T)O{))bPz9Zg|zJlI}Z@uTB*YBz4oyNWN2yA~(FIM87F;lrl
z49i`hm$DV;OzaVABU6&f#~dRM&=tuF^cCU?^*^E|^&Njl&csKOzu+8s3)?}A#_AG<
zu&?-guo&O$YHVMZ*-~H|hJ)^|*5<@cqt9S1It-?xX<!Iy>$daapcV3hhKNUX(M#8>
zFS~OD)p5IeeY6TSLJLtdH)pnV^JZ(8&Ni-}w?@NJb2Jz=K>biP)B}}39Z@#a0+DXR
z|L$t`Etm4GE~8_h4C}&wpwCt9|NHLhMb2PY$EgWr+Yh(c|2PfpP0kOihcnm8>EyIt
z*vHI8c3rc&{m96$x)^J$PkME0p#H&3Xfw?bS{_qTFB%inE(TN-eYUbx_bY|<KjkZ0
z0oQp?OPbn3TB&{)ORMw6CrT-Ctnx<4rYsk3$jyY&a!|-GzvACYhxql<LcW_ck}oLr
z;x(}=|3K`;9}q|IE5(KUOz|i`QT)hH5OWH%#D2mW@r-a(%p|@Pr;CiFh_$3K(kux|
zkEG>t0lAbiSAMA^<+*APrH1xefm%29hW=e$WlYotm@&P!byCmix&v@H^NVxNybDKK
z$5C;69mud}Vh5Z-_)yrAD1%CqDhg3&K?XGyyF}N*mopgAiM>E%<HnQExsufHo)1(h
z?-Kf<w>;C=_kt08BiNCCiu>VT!L<#fdrkyadbl9#Z5tfzT@ifgy&f#<O9p5AyrKKP
z93j6yU#PA>PiVM58d~MIgNOaEf|vb=gLnLsf_MEjgID}k;Hdv_V6DGPV1geDwDE8C
z|Kf6*@ICS!_4V`(^Ci56eB->YywEe>JJVCzOM3qC%;qL~C@za<4ttWL*jC(J<_F6$
zGuTCRW;RA2Vm46qm_pPW`Y&=U-INT{pNRd`RH6x$oA^my!<Udl@$zIY{4MbeTTCp$
zsuRsI36Ee0@c+O-d_O3PPXj#G0i40gg5R+;&=Ipx3G6GP-F*8ATtZjCakLZcLJPqL
zG!m>t-M~WB*lqC@z$7>GjzTdo2oc~{q`16(cDa7)`uio69UXKT{nKT1y31&Pw8Pct
z$*$+OgdUUweu3Yd3-Exm0uFZiz=BR0_|~?aW%gC4x;@wVYBg{cT9{MJI&0rChueM4
zUu?&CVy!TyTKSDa)@l8b*-#&2zSOds{j|RgRqbZXRUJK(x=G)s)YNM#@3fclbZw-Z
zM+?a})Z@}%wTl!{S?O=(tT;#+A!b!diVtK(_+7p%)RR{Wj66bkAhj1ZNOgtbQWc@8
zJH_4gG<O>%jTRhng8;?*0wZx^7OACJM%p5_lWcLi)KfYkJ(NVLkz7%}BhQuFD{tf<
zN>yc!x<e_fMb&580`+&D(`p$@G-zbeubKz+g;qVIz5T%`=*%(=r-*eAKC`x=8TJ@Z
z#%YXwa&qEpU<z-7E)WncB#(kNRBtSej^R(~Yq*>Ei0W(>@*8`RT)_393V0mqtY<Y{
z&s&JO;XTRJ@Kt3G`OdLXe>rZLe;0SzANFv8F`kBj$DT=n0^VJLk=`4DQ{FcL$@?Qv
z(3c3b@qG)7_5B-I>AM`*?b{kS?wc4m<7*N)<%_!Q>A8QsZ@GV#uYtd>PxaOEZSkf1
z8u-3=zj+UPXM4wZb9u{qPk97S6VE=+8?L)&C>Qb|_9C~09n9rq)44;;MYbl>pM6XR
z*go`0#-h41D=3mFPVJ}flI`f<NQ@4X2dOhe7pfoOrP7HD<XwC;ISVgF*22FMIKG3p
ziS;3tV}*$BSPCzNoxv$=F8&s@$IpSn_<8`bDd0KQ3mm~3gT+`GFc`}TnqwR&f$1ph
za;$=<=oPq(E`ozD$A6*)F1y2AX4`<)F2m(eW{`$VHzE9s9>P;-7hHxW!GWk5tckL?
zY4?Nk3GQ-p=>TU6%<nXS?`$tzZ9j1Jbg83S&75r(?KH8@+q^l-UTGGv%bG8&C&nCW
zm{HpD8n4Zr`W&;SUd;SgduEK%CK`S%x3R}nt_JE5{j(C)=O|~i!b&ggk?hwd$!F9e
zazFJyDU-TVx~sI3W++jqn(|sS<$dCLdAc}T?kcvDYl(T~VxlSK7XOj5i+@Xb#NAQ}
zah+6OTp{&!XR)|mx+w0GEb+2bQ~Dq+mRR|dR8g)g50wwPKRFah{zIvwWKsW6wyLsH
zTI;0V)~>1j^$METIH;X8it4@1!+N?^$+&M_H-5J}n01|miNm?pRhZYFg)ZB5K`)2E
z2zV9S4X3-TRwEKfB9?$XWJ#<O^$4Tr-|z!8OEhP;5<i#<<P`QM>E+r{E4a5**wc%i
z@A*I*o-RyJ?<3}tw+5TZw~OuTW4ZmlKHPWT87{k@@ig+c@C^1Z_009(^8D$yJX`$*
zygU3&y&L@lyi5Jlyc7M)yxskOdaL+1cth^;oo|VEpKqFXsBf^hxUZG>ySJ2gqu1+g
z>HXkwJSRMRJu^M6Jk2~R7xS#+UUJpAKe@MT2W|=*by<DDo@eH>-I>}fq77y%eVD07
z_hWuixm;df&{e4=^f$60y~gFWA$ftaiAmH6q6#&XFv;S?c`}L5Adlk>$w_#KY=FNe
zV)$<2D>jxmi!~&cVOfcRF1z)yYxpnNMjXe+;GaM%{01n7?*%Nr7<|EogR59OuobHe
zreZljR}6s4*e8^ZT}1-ehVFu?F1wx36i~*^5iBYMUPA}%gAdVoxCzyD`@RQOL=PPZ
zmpRvA3uiv$oTl)K?SbR$n@(YSrt_~=#r1yPE@SPq|1&$-GfmbmY@W968U3u`M#PF5
z7tE9TK(m7$HBIfju}SN1)YihrH}#ypMD3?nRHOPQ<&w5s8K%`ya%-CWR6QckSAUc1
zs3m1bQKWOqWoeqSLTaE4lp;z)>7!gkIxVM3D`Zw0DPvMc8JFtGUYEmcQc1a-JME<M
z@>Hpgd|2ure|L{5DzBDD%NOJua#GH%6i{X;eUuDkpVCEDlqYH<wUxHj)l;B#*ZXJ*
z{h>C)sG(;!Pv~dN;zk#1pMk7m<{tZ~+1jaMS<ZE94{T$%LmzAaMmYxn0Xtx8AixWw
z-S|1wjA#my#A~pa9E261bnI_xCf=O(693Z6h+mlq`JP!pc47V0Lv}V*jZ>-ZTpybB
z+^4&G$}opL%NWD+ld0-*JI=e9-S2(DzVv3{9B(@=n{N?U+IOC-?fbzs_W3<ce8oKt
zd<{KSe4Raod;>ip-w2Q79qoDK9qHNa9pahj?cr(UZRv@4t9V{|@_5#INKZ%4Cobx_
z$lc@q;AU~Zah155+)p;hZDilDE!cgm!;E1MF*RIP88*n=XD-pJnUQo?CO`cP^NRXG
zFQbmoji~W7PSvC@kQ_aUd`wj%H&T!oKwTlqQ40vd&9jfmT*NjqfsZ23;|<8Acown`
zo+2va*N8B_j`)d<B(7skiLF>(VhZNqU9cB;CF}^EhRw$%&<lSAs^SMg44?02-rnE}
zRt@~=W``kI64k=4p(wV-%?<<5F;Edr2Lx&g9>8?42EIdG;4YNY?QHLy;%K9jfSsKE
zFzO6|ckEx_G`CBYwpTcxtVYgC%d%@(hwX&f!~W9@+I7r}R)+DLwZ_P5)i7?F-}KSu
zay^e(RexZ7)g~J&wZcX%?H^rG=jq$jDtdc0q50Kq+D)aCHb;qS4U~tfPg$bAklUy`
z<jm@L`J>WWKB|<IXDLy+i{eO?l!TN;`640tqZF6FN$+G)dMQ)#GdZXHk6cUsBoB~X
z-IP7b1G%8$Q<^HRmC?#ZWrxBmuaqWgy1Gy8sD`yI>J%-hrnK5xKYgwCNmsSLMn^rv
zxZqxKVFS1RG?rT)GoL-pJZr0FD`$lD!%0~);cs>}l(0{tVNO%PJD<QPH~~|jA0LOd
z;5sTrj01lY8mLc>#_p0StQj>BzfHZz>(Fh9Q}hiYKU0oe!fYl*hNfDv1F602Ey`l^
z(ha$Z^djyaeV@z1P@bMlWzSBgpXU>^$di*j=xM{=^vq;mdk(TcJWpBCBeSw6#0j2)
z+z(F`?zN{Ocgxe7JL>7ct#)UurybYY)0`{hslz#3dF}!C3%8N;a|1YqEycZJHTDAg
zH@k_Q&Q4+Lu$@?fEze$M0_-g2D^riTz!1zT<|;jinN8PpwKc}j^mqC;b)H^KEvMU1
z{pie8Rr);{qW6+tsnO(FsusDN3XlV+H$+Y95RsXhPVi(~;ucw$*g`^lBKaKuA9)Zj
zPR_*{vOE5ssDz&(BKS%ojtwSmxZP|smW>#XiFhmQ7GB8JT?9tp&p=@ko&xtiMy
zoW!z&nOFvDiT#DLU^CGN&;;!TVe}h#4oibSpn^KOnIID!jh;HC&=MyO8#+6oV|Rnc
z-R?iYzT;%Ir#knn(#{m?lU>YO?P_a%dx5D~mCc>jH>0h!+90e3#xYZI9d)OxtsV4h
zhF2eJTyl9GtG(4rX{+=MwYk1eW%R-7Rjsr-OEZ)P+I7XNtx=w-gI$NNuZ&RhD)m)H
z$*J<PrM#8jC{N{U%02n8a$nw}Jd@Wb@8uP)tFKi2%AZOxWv9|cIi*Zf9w^6L1<g==
zY7w=ZI$Z6ko>Nz<KJA{`TjR8gS`#g|zCxR;ztIG}xc;j#Lw{oYt2Z*s8&}L#MomjI
zE?Qm8TJ}}*s$Ifr=&ZBuJFNXbIKh4ef7m@y7w0Q_;0y${U;-S2!?FB`$NoUWa0X=H
zV?b}>3wTAe!J3m7uybTVydbp%UqVT^K(!@W(Z`AXbcn>5fn;mu0=bb1QJ<LZR6ceu
z)sy9^KiM+$ZFU5$vIpoK+$Xvwm(FzM>M^6ZVa!}^HM5dC&1~eJGg~>{9fsY=Wnoux
zh1lP@vg}x{D%+E*#Wv>Zu*JFBu5wmolWaNm4qKGn!RBBmvq82s3z-6J2BR}CncK`I
zW*xJa8OSVWDl%gkn(4wka~a)6=V6A^1XF|lLi_0(^c!k7eSn%rPp10Q&8dcTE~+3c
zkPLm@<#jE2of=B+pz4vcscd9#N+jw~cZginHUg59i2um{5og?-u!dxak>m%w1$h=P
zLaxL~axngesEeN_vf+yf!Ogk1u*$?n%ufu*-r;qzqj(IPj(-L%@#7%7+ta>bP28Lt
z0~4?}s3x`pk=Q_V3lwuRZ2~q12mbH>p2C}`Ae`mq)*5Joqrv|<hoHyl3oqN*;8^>i
zQ^d^zZ><W>a_fg(-&$|$W^;SLiLCDCQ7dBhv2GaY)@0+3S;m-Z{?yBw+x4GDcYUjo
zP48^H*3ylQ+7rE}wn8tgwbf-cvwl^5udPxKXoJ)VT3xlN_KTWZqg6vqC@<7k%4zkk
zvQfRP%u~-RW7P}FK=r!POMRkrS3fH~R8#4%W>!b4Rn%E(FLkZDOg*k%RiCJqs;ZT>
zT-s!<nRZQ^s)h6uT2DQxoz_d}A!E2c)HtO-G%%yA*}_<7ZgSsYf-&4`Xuh>Jn=NhA
zyli){$~h;jJx<Kd4#(Kb;Y*uFRh)@vlaoLg><;?Ehu}7>i4{W!u_Y)go<g(n7A~`g
zKr6zB9dpxKn7oP&A+zJx$&q*#>IOcD%1oT5`V)XYLDZ)mVlG{eyh_g_E&3K&lA)+y
znOf8WW*l{l*-t%VUQ-go(tfrqosaEIS7ayC_1Fz`OZFVyo_$7lVl(KDZpv)yx_5In
z7gL8V%#>%#GWppmOoXk@I804fF>AWcUY$A0RAyE)WtnkIQKkd)3sZr~%)}TUBhZk3
zK=brI`U5?Oenj`6FVa=%gLFE*juxo7^j&HMy_@Pr&u}^IN|mN7QCaC2MbJDMr|ywY
zslBeg&LOu_y~(*$O>zj8ooq!JZZ>#9q*KQUom@)1A_u$7HYC=Pd5E#3?P~3Fyd-%D
z_qcldk?4k>CCcE-2?p;=yuvCG2QZJD6JFs>vAuW}Y%Km2)WMGcA3hO0!)k-|7z=t}
z4^TdA1^NcsqFvzsKG*dW<^#*&N7Ta2upI1&t~n7j)wv5RIx`_}SB86R-uczu<z%uu
zI}fdp^SgD!u3=4fU9+@(*!*S<FgICw&GyziBWP_fZkb(-nPxVlrukNf#&-RJF-V_o
zl-KJSnC>+mYtQu^+E#s%HbQTw)z!;tS@f7DYNq-?`>Y<;o~kRg8|ozOf;vDut9I1R
zsm-*@YJKglT1R`W*40vKW6h)ePb;YPbX9YdHd0%lZPa#Z4_rb?{hL-p_v@4OO8R+y
zfKC|e^ybDxeXYS7Ka6@tHFK7+!n|($G&!@r)ymvvtuulB#Z5M4tjqQcE3fm|n(O4X
ze>!9A7Vx%x6y|i&&`4(-y5;<fa=^-9BwPn>LLFpB?Xh9#nA-}xcntK$`+~plQ@~4*
zSZAU&wwKs|$!_bYN|wN<lcVv=<X<=<b-W5yi5N+ZA$Czmh?mrNf~0ehCFoXUTY3gL
zjy_EOLBAr8(*$*wE=+xJl})0DQ8=@N3NZVqOw4sEC-WbbhY_e>7>dr#q|@2mq?yi?
zq5VvCR~;MDD&4|$@^<vUbZ7b|-JL#3|4MIlXOX);j_%^J*@<rC?k`2Rq%*r~kg838
zp(?wKmZFbP`RPAgHYZU*x+jIx^(loaOns$-)JsYtZ&EMG)6`jV7qyvONzEjuQGLll
zR3ow-RfMcT`N#rPg78!K36VTVyd)P9XUT!Yda?mAnaoRcbu&UG@+BT4kGQ$^cl;L7
z9p6lp#m5pf-h}uE%TDaY68HqnO~2RzJc_l)--6t3Hu&jwv13?8Fdl=by8B84?00k(
zG(xk12h{<0AOYsVE2t5ihA3DSU3E2fx^om(bA~|OE(lNB@0}6$I;XhZ&dIQX&K~Qw
z-Ork1=eKIRcN|)~%yZU2bD~w;tZGSyZJskOnsbcVW*eiKncGM+1^t6@LqBY6blDxJ
zw>8@8MO=mnBdh*i$MuVPLfhuL^?d!YHd4Q({i<KrTDw!<U9X`((ki?AD!a#2caN>7
zXVY7_M0V3V=|lCY`W$_?zDa+opLNgnO0Q@*`Y<D}vDav3d^IK*1<XChK=WVYkm)y7
zvz}SYnrtq#PMfbR*(~I8I>8?4{v{`@Y>s9PbE?=^oN0DCylxMKKIek#GGVmN>4QEx
zr%@5efDy1gI0JV91ZB_w)y5W~h1g^C42!xh)*kf4{{%bmf4~=4De@5=upY!pY#s3c
zdrYu6P1bVn+E{!5xes4O{)b;61H>1y8sVV^62+*ML{sW-x5a!WW>6gYCsm9*L^UTb
zQNNLosD-5K&*XRNGAUB8NQ2@@NYNBVXLYG6>P|HZ(9I~D>P+cWKT4oRQa`B4)CX#g
zOWI=U9<`FXO#Mlnpf*vvsjbvnY6rD|+UXv#iyGoCySTqMp|(+#-TeirbyOO)nj)yB
z?z7CJ{_oq^Z<FJw6Xb6$r#-0!E}x^xhEzAQ5>=lpOcf_HQ8ALFOgF#2BVLnNiEHF8
zVm~>bSmE+ImTXLPCJPePNQ%hrW&?vbhrb}!;Kzue_#&bn-iOGFS0PeZkhp|>!dGA?
z@Lt#)yfoGphaeAr7sRpE;1u>Nn2r?&jWGcQu`}oyn2Oecx~Mx~P;Qsm&uEF;yIR5i
zC;|(jXU;dc#@Pcqy1gr_QxN`Ve|NUnyPe+l0H>f`#EDxO_A%>_J;54j*S0F!9?P*_
zn%AuD<`Qd^*~zMF=C?ALl9@2BxvKVuxy2Y_PBrS8zZyBsI)-HwHeMSM<Gg{~+`#J#
zjL-TQ<F($~c<%E2OmA$w&}+H`R&}>ma`#s@fKkJUxjI?YXlc|px){BUA;v6Ynz7qh
zV>~bp8M<-X$Zvi#+L^35*DPwDHCvg2Io>R6ZFLjNeRGRty53*d%3*i0y4#DbE%s$M
zjjL8c_gy&1>0=*u*4wi4+;x<oGZi*=uEJRkhb}nHkl`#t<=|5^9LB&t*baPwt3fXJ
z)$52N*mAcO+(Gj(;I`Wez{CcFQutQT2Y(L!z*+1DUKvyHL0BGQt=p1sVxtJfWjGgp
zo@negk&!qe*5NtGi+E-7v+JA;G1zS_)7?A0njApvCVwYRliP_K<OSj>`I2}`3dDDk
zBLy-SsgvbNhipvZR9BLshLH?4jby2%?rd_`54hXTk_2^~MC4=ABwv#%`Gri83GxRi
zlOIWod_@B42}!#=a?~Z#N1Y}E?xO<KR(DpDerg`+r6##&8tR_qSJEb1kqTMMeS8V>
z6Pca-$GwVsq)J>QKN5$@yTm5)1hJUhKujQK5q;b%Z$Y*o%9EvCP9p>$CHyn-1iwKX
z!FLji@!7-xyeClyujXdibV9_E_-*Vuz7boGkHCiG^|0D_8WweP!DsA*tFN=bjQ>}&
zd58IQe1H6$nUA(gln_y3^}4LK7AwK(HLU1~8ZB6Dt(LED^%kPDiw%ots|E4ZqeY2c
z646<8l`rm{ne%(|Jilk3bMNP#d+xn6b6)eFGk+|%pr)LkKIas<OWS25jgeStC|^-_
zNl(|@Sy|;4$`7s+GE_{Aed><bWH-Z(aBXZ&7i`nJ6m!n*FpKP1)73UNAvT|RXP)|p
z%|8DpGu!WKzV|Dd>V6uN!@uf3^)~s(y-EIBud_eJi}3q-dHg8P^CG;zz2e?MFQ=E}
zrS*RDJk-6Z@B4Wv?>m9GC|D!!(fiuo^Y>qRZ{OGOv{%E+?$!1Rd-c64;IOIJ!Rz7m
z^2UM3cyFqAz+2(n^|pKI{nK8k{}8h!;7{-i`J4Sn|EAyF|HQ=kHO&Tpu=&eRH1GXu
zrl84c8=Jazs2OEfnq+(0Jhr|m>`K}WuC<-(Cfeg}n`OCU!zG7{mf9{+2DxjJ;IhzJ
zR|^_Dn952bb(BjqRnqbfsmynzD`%#eT$Oflce=$hDTCTc<<!5_N~PmiRhAd2R{Wb9
z##hu*aJ-+h>DyddYZa-Bs1DeX4AfoKL_Jz9)Js*8-i2!KygII*sw+CJzNZW5R2`;$
z-BhOubkkV^!*s5|44pp^uL}pZ>Jov&IwWvOhX(HJN`W^zED#8U2XX|eg72z<GJ$Hi
z3J=tVH3@_Tz6n$ed>aT2bPtpc^a&IXL<b5527|?zK+eFhK$gIWK-$3YfYGsmS2`x}
zP!9;)z-&4L9uHuRPu5YGNeu&Yp`T-P*+4%X9B8Mr1|qf7W%Og6Q(w})+OKb^HTtNU
zrIXYUJx#UMKR{C(tGv3T@>E)NRo&w4YA?@G3%IZ9&vj4}<Wu?iCBLL&e3X{)Vj95x
zD3ZUToSc>J(;eAC+hh_=kZ&kTicleWEw9`mIq2rdY%tr|m6dYNcjQjEvv!e-ht>|Z
z;jXUD;BwpR_Nn>R9yVj_V$;eFg61|c1ns?I0%ohZ<IgY${oW?gZ(yeSCCmUngK6hK
z1wrTiP=Ajf?63B-`Lq1A{*S)#`eB9s&VS*x^q+YRU^Vf(y8l0~if_Fz#Dw`d{BXaZ
zU&F6}H`MW)_-*~xezf1skMjrmEB!J4K7WpX-B0v=f485{obkUh5B+Y2Oq|JUHkvSV
z(X=$i3@}CQEYsX#U9e}&YWo7a$?Vp%m2ENC&bD-;psn$CojYnTxfJmFi3^d+uAQ{U
zZgjNUD68FNIqry_xnijPn^CyL(6_RL#>syA1qyIn((w~132qy4S^9y$rYSs#*6>es
zgp=uC{)>E0rJO1&mj%Cdu+!+Mdh<XvkteAH@VuATt4q93z2MU-gSx2-t7odZ@>NTf
zLHB_ojZuZLs)pzdDqQbZwe>|*fe%$H(9uz6*4@B#A04U(=vq2ff2~L9PI`>)uP5Ty
zWIaVs)ARKV9j|BW^{{QQ-(g2!C-p3SPEQACQ}i{&|E<UBfAmOwQxCzpAFjXGS9M2y
zQMb@%bUl4sSJV5!<_`UZ-k`JKomS1&Pt<sQRSnjMp`n{pGrb6Wj#WjVsabS$^+r`v
zH`Hh9fbuy}-QdaSZ69cBBQ=UksrH;+h4DSk&IkA@SUrZ?HGx|4NGi=yq`5R*Crw-F
zhD@bo=}c23j5<pusv>tKv+S0;Zno@kJ!GznkUlOu6eh*xaR=NhaC_Pga!Izan}95L
zv+Qcx8@7PmZOJaQw@j=(V%pkurkb5?^4sA?*{<e+X==`x>SmWIX;y-unI?-FWt8~=
zYWJ;4^_!a~ejN~2)jaSkz)G7(elh5FVe`r_Xna^2Q^;g9#Y}!v%9JsoCc=c9W~P?u
zVj7zm)5c6Q-SOr@W{(*MHs_k>X0^#^cbek%By{v&)6KpyV{ImzV2juTwz|D-TUqV;
z*`hAa)^!QCr`v0%y32MwdU(ox;-0zE?h~o+%1bvFC1c$XS?1=+ZnsS?y9@H#y^^ew
zl|m$h8cSp9A-!lkb^|LUf%eEAx+E9rr97vMl#Yv1FxR9i+yN`w5b6fq9mZ>E1|OsZ
zzDC>l75%{(`6?IUM_ipfZplGl_;WRyOQ`uArq+Y&1KdJg<nL4pGA!6h=TPHRF*RLP
zRSQ&Om7u;;Nos&fR%6s2HCr8q=cL-K{!;s)VyD6Vb#+fYR4MAUdag*nQW^FCR8IX~
z<p=4-w80FpsuIpsajpShE&Wc_(Qi~;oeFybdw^Boma3_*U@bqZsz5i(qb4nhbv{_H
zR-fqwDwCe9L=9IjRWEf{wN@8Yq&lcV)fSakEmvvO6!naUU^aGC`?#J;<PbF#YkxGq
z<0$@{!@y~7Ud295<m=Rf_fmacLM3<vMzB4!HJpx6E?PxzWGtOW4ZB6E(=5qNedV1r
zl1oxTwn`eA4Q~6(A=gA!y3#Vv1tEJWu8uqIin?_!gPZQ2+WzjGZQ*v>%5J&M<0e^h
z(e{CDXHVODcBicfLW1oKo6Qcl%Ju{`t!;{_Z*Q7#d)bt>XH5Zn!hC9vg0910`w&#{
zFlvk==A}6X>i#s(%z5+FT*vvYd4c0=^WMBQX{<FlY`_+>8Epld!`8N6fWQ*?LIpd*
z*0eKiQ@hHxx4+rm_6)v#-%hs9F0wh@IvWBu>tWV)a<^=(dt>Lg^lrV&=MKA2_cwa?
z)^%`MCEAsg2`*9=yN<F6ydH5g<T~ntRJTvk$wkR8Po$zKR8yZ(CvY1hku*)(QiAlO
zofy?WWj<E0Bzg~iGtr+^kZw{Ky`(0jxHDzv7%IY3sUk1OikA!}`GYzmQ_=jKMzP|l
zoQoH7NnXtnyqTNxUhcxjcnDwMNqmzRa0(~!Yu?R{PjCixjkBxAoL6~V6uKOua;wVV
zIYLzgGqqGB)l_}0+Nw6HyXvT-RTogzLyc9v)l}72&4p)?8mLyNL29)ctk&ZED{K>H
zz!ueCZB;+u+ymAXzK&`=SX`r;tCgyrTB>TO`S{8VRYFZr`P2xN6>rn3n|g!2{#|Z>
zSyojY=8|eF=T`BYR!v8%WBFh1#wWQc?*yj_TmZdI&x82|b>PcXn}4U0yppo=6naDb
z=>|p70r2_@<)>-H6ip8#icU%u+9dgCo)8U_`|_=vkXo`yipxC7B*Wz;>Vs>pj_e1w
zYoNEYo##flTduo1>6*D@SJf?Z#oT1~sT=H+>+Di(Gk4oYxC^!vR@Xf4H=D_AveqWr
zRJ+vPwe#&2Fm>8au}AC#yVs7h+wB;;$&R*3I49b%b|w7rHqI`y(_wS%a;W!mc;f9^
zkhs<Uf~VHoKkR0E-tMqB?eF#}-sRa-s8%l8-0mOj5+9;^d1V_oXWO|T*T>~@qg)|3
z!<BO@Tn)FyH3Fk;-4)lvJ#sP5xCzkId9Dzu_{y@?)kkI2UjA}@<+dAx5tt)dR>`Nb
zT?)$|QdzD@J$WQ;<h}Gl^*;==eTtNzB@#{>qyhadZRoUoPd8CBypZukG?%i`3Mxdu
zQbpQBb?6wiqKnjnZc{8hqsipaLa0d+SpJRj^9f|_8dc^L`U<Mkh=aH_f6kr2a32l_
zxefS7c;dJ_&*nkAh{r;mX7M^+!drPQNZtm;+Rw-N6rbTse35VQb$*QFYrfA0yr)sm
zIg?6-#=VA`zvVB~J1(r=b8)QKr9gfNuFJw-4(x@hm-zjh%Ru2vse4>Z-9+qF&acjc
z!xNkhD?pIi#Y%1Dw`j*R%&0p&jj!;3@cjY253_AEw*Z^9c`jGraU6^`e*&+i=ICJ!
za9WBFQ7+zuwSNgcr%7~;20~Li&=#skODL2kQXU#W0cwxYtV7qNEFG55!K|i5@?0j!
zHR&&hr9GIfCyS-LOp-5TpkxHe?_49f@51E*_GE|Lr?Sl{WH{B$2fuOdFK~RwMZ0aT
zt6Kva7J=uPuC5ygLSkK*>jzr8W3}xFzN0`-Q&+&%clljSm)BK?g+u8o;kvvFMr0vZ
z7I7i26wc*fm2s?&d$nCf&{oB@bk(4SU*e6CcymKH3||}XTH%Ww@a3*9(e(zG1Ksa#
zI97#m?vk74?znmG1?HDU`+{VP%Z<vXm>hK#<(#V}H(WD$08M@6dW*PN36k-WOXf%+
zSuSN|y;PH3QeTcpl>8-~<sa!MDKbLdN}MoeduHhChfyp-d!-!e+3Ivz>d`%Ef%>2$
ziS$H`Fo-^<QB;iLs1nVg+Q`P&P>*kEGyOojX&4<swocPebcGV=U)o41p!*daCqtJg
z4d15B(BNEPxByhCIDg8aP^fS&&0j*T>TxaTR%33(-*5-+3?h1SPq5LKNAf^$GL)zA
z2%f{ELDV>22DM(rlfm~?-oVqr)C^9BZReT13+LZH+BDb{Tu*`?j>kM0&0Fxcjd<5O
zu(%puSOL9U#O=XiOT4KO-dvN1qcsD#4ENxIXh}}~nlo@+@EMNQm*!ja1z&)M9>Hp}
zgI?1bx<?Dpzc@OI*}Ic^Vno`|&tP>TRi+p!Ox-CvlvZQBUP*bnEd}WuDzXF6*UgeD
zE975P17~Hd><6WrrK==JOJuDMvKJ;pq@?tae9~4vLG_@e1{f|c&s<T|4|(J&RO+k?
zU}xf?;(g(Ey9ZF<f80iQ*(JHNZnZn+;=%NCx7RIkJHgdfw*Yq+U{zk=*1Co67x-4W
z#V!F<#p7=Uu2#SskB9`f3AP=cJ)rRbnEM0X(|G<O$h_fpxV!k`6Zc>D8s9MZRvJ0u
zvS4<7h7}@MZn;w6u_9U<A#YqgF|Ij!&<?9eS7>Kn$ty#lpQELWOp!`57kyib8M{WB
zW9GJ%-=vEilpo}z#K;9i{VkK_0is^WGE`E(d>p;>v|F;#5y?Ymq!5&#G<dB<&n1F9
zsSAZ@MwzKKnEj55KwZmW&8tR3sV<EMx09eKGvWOi>aqe<uR#Vkg6bWhdM~byKyOZg
z-}A`pH9AAL=qf#cLO-J?$od;-v?by+oR+hoD$d1OIX_q_!g;`R0WOa!xe6CUjZq3*
zmjT`7z;=0V#ucG{l|XrAXm%L4K~!7(ZU<jm+-r-Nwuo)bA(#gxL1j_YC<XCsKD^^I
zsAe{<f$vq}0A`PcR=%Oa{EYJQeagW%D2UG!^Kp7d|3yo;(;ZrecCSGD=V5kE2A`v7
z1JpB~x?!HSL7yAZNcs{ZQ=YnFl)j<Qr~w60b#l<vS77y?d`ed^(x=3L&{RprzH2R3
zyk&9<-0qi&SOrH&k_-UJJy0WbM4qCMuSUpQE#$8%vRwgcTuNF<5ov(xu9oD67Ue*V
zmsvt2gA_wO94tyc{QpBvP?B9dml>RAfTfkUPUB2CJNFKhy$9<ajy~*zhvogph;%py
z!Ls1#9O8pP>+(SdKfJjpzEB#qWqD{~m}HR%$tJbIU<3JFnqhW*BL$@cqPn1!y(ARt
zM<uXXO-9LAn1yv@sx(Ajzm^5k8d};>649p((i@e0G&mh92joZ80Tbj;nFdyWlIyZa
zZp%v41W8ztHp?4C8ALH1lXP@evd~qG>MhAjk1)b7Q7d@RTm`+zKoL-j+F0QlLOGgK
z8Dyjqbwq}`LQ#6d6HRTQDxHzX-ZT!1Jefv-<MGJvG+K<xA|CuEV*jxYe_OC`-a)%S
z@qYXrrNgL}kAvtx!NfUK%@^q|v^oWq;4}IM74$873y+6gjH5@OI|Xa-6H1GHc{*5n
zaFzk*Aow!Eg7`76AK~5u*u9SmulObjcI<{OgTeEdC#SK7AE(Fo_I=uiRbdxq(^k4b
z>(PqUXwx!~Iv?H{SVbmM68g1*hCosK&@Ac#Pg{7J(_r+z55}eoRRFamFtZC#B;~|>
z&Ioc96~}HMKcz|z)UZMH57glTs<D$$i$kbkcSAk4U}up8W)n~wER;P^*kojDJ@UI6
z*;|Gz&IiM@Kx~|R4>j&ABa!JCDA53EC4G?n9?}%vM)1~$iq(ZT5=_?uK{cf@tO01L
z3yXx+!u5y0FY&7eSc`x+0(Yz9*$BKNLYlyu!&>70H+Z5AtOK6tgy^ndt|zpx58l}y
z(Sz~jSVWIR^cXNW0j-*XcFaI~=1MpD8PQ7-9S<H85xox48xft1=v|2Z9nlA5rW^&E
zr_lSe=<h}Fc@;DHCL-@5@*x;~D*u(2s1V*^<cyrdC|;2OMl%E51+ys_-Bj$!-eGs(
zz^%rp2Z7LR$UtuFz`lTL6s4LJ0)?#zU8#mF)k0-kpW5NqcObbNG`A;6?n}L(y8Xd%
z4Coz6|DmxUI1Ya^K=E8;egTe4aZCWyzkreT;Cdsd-ioUow3dDY-M>T0_QQJ+<a|);
zKPVZMbTXZwZ6EC<e*eFnz>_BsbAmP@=2ygSz%xnE#5H)wDv%kES+WfJxDZdyL)2`1
za~i%Dhc=AEol$7bP^=FFX*#N%Nm$j#pid*f=U{3<{ire4l1S<VM%!W@x1h2Zf#UE4
zV^ng(lO5v{gxV<paxF&jEoy)l7}<x|>E0F#&G;X3@?6e9HI6|&4$2ML3(rn?w#ael
z%^|Ff`;fI=$lg{c%tjEK1dbDt*?4Hw5|Fz9+5QRi&V~X{2iKE9!6fY3#>+5xhQc!x
zo)~yyz{n6BV?G`S!v^BsfR7dnj)sH05vUPI;`}3QG=7i8c|7h<giVG`l|f)|FuoRp
zug0J~v1q|?RNW)c#!;ASqp?pKgLaPxlatWm$>_^8*@mZf;;G$uY9Hu5fZiMd!N<^#
zlX&6`p7;w-TtX#q6>Q!>^uL(1cM$ym<B$TieTK+Xko*Q?^d3<LBop1iXg-uQ^b{)a
z63o7n>|`V-_FSJ+8tij}kdIG5X-+B$jSWFA%HygMmBv1}9CBBgz5=&(aBP5M6R2==
z{6*ofHS*dXO8hPO?Sfo)haUBW8ux()_e13u4HgE0<QT9#j3(eJ4$Mr0X9h@_1%~Fp
ze!`ufp=t|2(87-vM~h&KKb|Ljw8bCK6Jg_Ve;i`RLLo=v*&i`0M&ez=z~E4t3i9Ic
z-3gdaW3d|i2W=XGwhcua2cfn7F!%bP_1(c{XXs}KtShb2$CgxunnFh#p#QbOXbtQ{
zt6*#@fYT7l0Z(Rl(!rxp4G1bMPcqSK)Bw*hx{pQVo_KOgUL!9r<gz@*ns*;LyN!(e
zjm%s{hAu!!&Vk=kP?ck{1DczREN_Mq{few_Kt7W|!7uQ9utbot3f=^G6X00^O<o4l
zmw|_6SaFx)xb)-SV%S1leXs?v`5$fhN1G>28b-D1j9fQtR<C)(sCum`<9Ge&zTMk&
z8Tx&2iO7<{k-Y}>9vmE1HaK!nm)<?g1os*;WI(lY<zi!F%l1TEEaJ*`i|&Uv)NNK@
b;pt#%7}>H;M*OM}8d@nNG(4nyRigg`B=Qf=
new file mode 100644
--- /dev/null
+++ b/im/themes/status.css
@@ -0,0 +1,65 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+.statusIcon[status="away"],
+.statusIcon[status="unavailable"] {
+ background-image: url('chrome://chat/skin/away.png');
+}
+
+.statusIcon[status="idle"] {
+ background-image: url('chrome://chat/skin/idle.png');
+}
+
+.statusIcon[status="mobile"] {
+ background-image: url('chrome://chat/skin/mobile.png');
+}
+
+.statusIcon[status="offline"],
+.statusIcon[status="left"] {
+ background-image: url('chrome://chat/skin/offline.png');
+}
+
+.statusIcon[status="unknown"] {
+ background-image: url('chrome://chat/skin/unknown.png');
+}
+
+.statusTypeIcon[status="unknown"] {
+ list-style-image: url('chrome://chat/skin/unknown-16.png');
+}
+
+.statusTypeIcon[status="chat"] {
+ list-style-image: url('chrome://chat/skin/chat-16.png');
+}
+
+.statusTypeIcon[status="available"] {
+ list-style-image: url('chrome://chat/skin/available-16.png');
+}
+
+.statusTypeIcon[status="unavailable"],
+.statusTypeIcon[status="away"] {
+ list-style-image: url('chrome://chat/skin/away-16.png');
+}
+
+.statusTypeIcon[status="offline"],
+.statusTypeIcon[status="invisible"] {
+ list-style-image: url('chrome://chat/skin/offline-16.png');
+}
+
+.statusTypeIcon[status="idle"] {
+ list-style-image: url('chrome://chat/skin/idle-16.png');
+}
+
+.statusTypeIcon[status="mobile"] {
+ list-style-image: url('chrome://chat/skin/mobile-16.png');
+}
+
+.protoIcon[status="offline"],
+.protoIcon[status="unknown"] {
+ opacity: 0.3;
+}
+
+.protoIcon[status="offline"][selected],
+.protoIcon[status="unknown"][selected] {
+ opacity: 0.7;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..77f2462e5bfda652074261e2e160fcbc99c3e04e
GIT binary patch
literal 193
zc%17D@N?(olHy`uVBq!ia0vp^EI=&7!3HGVO5{3#lw^r(L`iUdT1k0gQ7VIDN`6wR
zf@f}GdTLN=VoGJ<$y6JlqGV4O$B>F!Z!R9>YB1nozHp6KvcvDF|A*Uu>OUwQn$h{}
z$=ThF7d}ety>eFPY83Oboz;bBSTAt-9pdt6Qcg<SvR&Oe(M8=+f#-#eM&SL;5AGdo
qovUE_?G%4}<IMt%<e&RkBp4jK#SYh8RpkX*$KdJe=d#Wzp$P!<tVhZK
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..deeeb0add3074b1bf453f08dc96cbf84c43bb74f
GIT binary patch
literal 353
zc%17D@N?(olHy`uVBq!ia0vp^JU}eY!2%?w=BAkdDaPU;cPEB*=VV?2Ih+L^k;M!Q
z+`=Ht$S`Y;1W=H@#M9T6{WcR9k2U98mFNvXA*Lj6cNYeRRlUkaK;BbN7sn8diE{%E
zay2;!)Sk<mI7LIQ$-!`u_k)f7FU9UIF0Q{Y|0{EC!*st&kA+i`E+13zFtax4Z@gK#
zXS=a80}n?@;-Y@W<tMi`INq7|=YwF<Kc^F0IX%yOGbnDF+oku^bl00H!U=713z_e4
z<U465ecYn&ac-GMn^{fL;)`lugO==A{Nzbh?XeX~Yf}5>%+7zZT1Kq#tQyy==74!l
z%jdmnT-4}p8k!oGG2u(p`YQ@qtHWCT{se`%pX_<9KH(}CqwPPH7u=3tpT~<X>fNw(
w;dfPO-@C&1mq{*_p1eo*+n!A0uA~1r6|E|7NS%re1$vml)78&qol`;+09N*jSpWb4
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..df7d914f8ef208bc6ee0a8eb6ecc421b7cd9ad99
GIT binary patch
literal 450
zc$@*k0X_bSP)<h;3K|Lk000e1NJLTq000XB000XJ1^@s6sjPP<00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipM*
z5-~E;v+-yE00BZtL_t&-({+%sOT%Cg#b44|I#xlt>F6IILBvti(ME794h{v2;9{~g
zf`|%L>E`09DAK{HBH|`O3px};QHzN6YZ^X_6-xaQ6VIhWTJ_+D<M-|z_drDOw-!qc
z#+3wVvD8E-li@2}H58Na%f-w*OvX=i)fo44zvEC`Nzg;FMA_{ly1lxi)`hV)XI(Xh
zO~&(Udj`rS2G?<MUAV#0js}zQQ(ZMi0U*#Ux+5mz7wN-g@JbD~un`J}V1GE^FC5d!
zN#yp=X7a~{b1AMQXfwM4(G)F_jhgia&v8K@)L-AxKhTHuWCoHxWmM^lq5u%-jfjP<
zxv=?EMW8E)-Hij$s5io`_pHv?$n!jUzAqDdtdJH<(ZA6FfFm5(!hs}9o#+p-{fVAv
sH$cC%2)1noWNURc9sQXlS+e~68!nK_h#5%jQvd(}07*qoM6N<$g5>nSZ2$lO
new file mode 100644
--- /dev/null
+++ b/im/themes/tabbrowser-gnomestripe/tabbrowser.css
@@ -0,0 +1,224 @@
+%if 0
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+%endif
+
+@import url("chrome://global/skin/");
+
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+%filter substitution
+%define toolbarHighlight rgba(255,255,255,.3)
+%define selectedTabHighlight rgba(255,255,255,.8) 1px, rgba(255,255,255,.5) 3px
+
+/* Tabstrip */
+
+.tabbrowser-strip {
+ min-height: 0;
+ padding: 0;
+}
+
+.tabbrowser-strip:not(:-moz-lwtheme) {
+ -moz-appearance: menubar;
+ color: -moz-menubartext;
+ box-shadow: 0 -1px 0 rgba(0,0,0,.1) inset;
+}
+
+.tabbrowser-strip:not(:-moz-lwtheme):-moz-system-metric(menubar-drag) {
+ -moz-binding: url("chrome://global/content/bindings/toolbar.xml#toolbar-drag");
+}
+
+.tabbrowser-tab,
+.tabbrowser-arrowscrollbox > .tabs-newtab-button {
+ position: static;
+ -moz-appearance: none;
+ background: -moz-linear-gradient(hsla(0,0%,100%,.2), hsla(0,0%,45%,.2) 2px, hsla(0,0%,32%,.2) 80%);
+ background-origin: border-box;
+ background-position: 1px 2px;
+ background-size: 100% -moz-calc(100% - 2px);
+ background-repeat: no-repeat;
+ color: inherit;
+ margin: 0;
+ padding: 0;
+ border-width: 4px 5px 3px 6px;
+ border-style: solid;
+ border-image: url(tabbrowser/tab.png) 4 5 3 6 fill repeat stretch;
+ border-radius: 10px 8px 0 0;
+ min-height: 25px; /* reserve space for the sometimes hidden close button */
+}
+
+.tabbrowser-tab:hover,
+.tabs-newtab-button:hover {
+ background-image: -moz-linear-gradient(hsla(0,0%,100%,.6), hsla(0,0%,100%,.2) 4px, hsla(0,0%,75%,.2) 80%);
+}
+
+.tabbrowser-tab[selected="true"] {
+ background-image: -moz-linear-gradient(@selectedTabHighlight@, @toolbarHighlight@ 32%),
+ -moz-linear-gradient(-moz-dialog, -moz-dialog);
+ color: -moz-dialogtext;
+}
+
+.tabbrowser-tab[selected="true"]:-moz-lwtheme {
+ background-image: -moz-linear-gradient(@selectedTabHighlight@, @toolbarHighlight@ 32%);
+ color: inherit;
+}
+
+.tabbrowser-tab:-moz-lwtheme-brighttext:not([selected="true"]),
+.tabs-newtab-button:-moz-lwtheme-brighttext {
+ background-image: -moz-linear-gradient(hsla(0,0%,60%,.6), hsla(0,0%,40%,.6) 4px, hsla(0,0%,30%,.6) 80%);
+}
+
+.tabbrowser-tab:-moz-lwtheme-brighttext:not([selected="true"]):hover,
+.tabs-newtab-button:-moz-lwtheme-brighttext:hover {
+ background-image: -moz-linear-gradient(hsla(0,0%,80%,.6), hsla(0,0%,60%,.6) 4px, hsla(0,0%,45%,.6) 80%);
+}
+
+.tabbrowser-tab:-moz-lwtheme-darktext:not([selected="true"]),
+.tabs-newtab-button:-moz-lwtheme-darktext {
+ background-image: -moz-linear-gradient(hsla(0,0%,100%,.5), hsla(0,0%,60%,.5) 4px, hsla(0,0%,45%,.5) 80%);
+}
+
+.tabbrowser-tab:-moz-lwtheme-darktext:not([selected="true"]):hover,
+.tabs-newtab-button:-moz-lwtheme-darktext:hover {
+ background-image: -moz-linear-gradient(hsla(0,0%,100%,.5), hsla(0,0%,80%,.5) 4px, hsla(0,0%,60%,.5) 80%);
+}
+
+.tabbrowser-tab:focus > .tab-stack {
+ outline: 1px dotted;
+}
+
+.tab-icon-image {
+ width: 16px;
+ height: 16px;
+ -moz-margin-end: 3px;
+}
+
+.tabs-newtab-button > .toolbarbutton-icon {
+ -moz-margin-start: 2px;
+ -moz-margin-end: 2px;
+}
+
+#context_closeOtherTabs {
+ list-style-image: url("moz-icon://stock/gtk-clear?size=menu");
+}
+
+#context_closeOtherTabs[disabled] {
+ list-style-image: url("moz-icon://stock/gtk-clear?size=menu&state=disabled");
+}
+
+#context_closeTab {
+ list-style-image: url("moz-icon://stock/gtk-close?size=menu");
+}
+
+/* Tab drag and drop */
+.tab-drop-indicator-bar {
+ height: 11px;
+ margin-top: -11px;
+ position: relative;
+ /* set -moz-margin-start to -1/2 indicator width: */
+ -moz-margin-start: -5px;
+ -moz-margin-end: -11px;
+}
+
+.tab-drop-indicator {
+ z-index: 1;
+ margin-top: 30px;
+ height: 11px;
+ width: 11px;
+ margin-bottom: -30px;
+ position: relative;
+ background: url('chrome://instantbird/skin/tabbrowser/tabDragIndicator.png') 50% 50% no-repeat;
+}
+
+/* In-tab close button */
+.tab-close-button > .toolbarbutton-icon {
+ /* XXX Buttons have padding in widget/ that we don't want here but can't override with good CSS, so we must
+ use evil CSS to give the impression of smaller content */
+ margin: -4px;
+}
+
+.tab-close-button {
+ padding: 0;
+ list-style-image: url("moz-icon://stock/gtk-close?size=menu");
+ margin-top: -1px;
+ margin-bottom: -1px;
+ -moz-margin-end: -1px;
+}
+
+/* Tabstrip new tab button */
+.tabs-newtab-button {
+ list-style-image: url("moz-icon://stock/gtk-add?size=menu");
+ -moz-image-region: auto;
+}
+
+/* Tabstrip close button */
+.tabs-closebutton {
+ list-style-image: url("moz-icon://stock/gtk-close?size=menu");
+}
+
+.tabs-closebutton > .toolbarbutton-icon {
+ /* XXX Buttons have padding in widget/ that we don't want here but can't override with good CSS, so we must
+ use evil CSS to give the impression of smaller content */
+ margin: -2px;
+}
+
+/* Tabbrowser arrowscrollbox arrows */
+.tabbrowser-arrowscrollbox > .scrollbutton-up,
+.tabbrowser-arrowscrollbox > .scrollbutton-down {
+ -moz-appearance: none;
+ margin: 0;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up {
+ -moz-border-start: 0;
+ -moz-border-end: 2px solid transparent;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down {
+ -moz-border-start: 2px solid transparent;
+ -moz-border-end: 0;
+ -moz-transition: 1s box-shadow ease-out;
+ border-radius: 4px;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down[notifybgtab] {
+ box-shadow: 0 0 5px 5px Highlight inset;
+ -moz-transition: none;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):-moz-locale-dir(ltr),
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):-moz-locale-dir(rtl) {
+ border-width: 0 2px 0 0;
+ border-style: solid;
+ border-image: url("chrome://instantbird/skin/tabbrowser/tab-overflow-border.png") 0 2 0 2 fill;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):-moz-locale-dir(ltr),
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):-moz-locale-dir(rtl) {
+ border-width: 0 0 0 2px;
+ border-style: solid;
+ border-image: url("chrome://instantbird/skin/tabbrowser/tab-overflow-border.png") 0 2 0 2 fill;
+}
+
+.tabs-alltabs-button > .toolbarbutton-icon,
+.tabs-alltabs-button > .toolbarbutton-menu-dropmarker,
+.tabs-alltabs-button > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
+ margin-top: -2px;
+ margin-bottom: -2px;
+}
+
+.tabs-alltabs-button > .toolbarbutton-icon {
+ display: none;
+}
+
+/* All tabs menupopup */
+.alltabs-item[selected="true"] {
+ font-weight: bold;
+}
+
+.alltabs-item[tabIsVisible] {
+ /* box-shadow instead of background-color to work around native styling */
+ box-shadow: inset -5px 0 ThreeDShadow;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4d71308d278644ee9dda74ddac9207c0b1b26b3b
GIT binary patch
literal 538
zc$@(m0_FXQP)<h;3K|Lk000e1NJLTq001)p000yS1^@s6AP5Dd0005uNkl<Zc-rlj
zze@sP9LBrzygV@rlEjRVB2zLWD8!Z$hyIMVh=P6${TL%CXpNwPhG;CJA!seCMFOcM
zS^^=Vr52HvhPUT|Z<AoxFR=39!^88u-;;Yd?)9xvO8ptCWqyLildn=O^W$YSpaTP#
zpcYtf&`WN}oL0$Ybl{W+_W~dAg8-FYa!cm)N-d)S2XKJ~DbNnOKsQx<K-OI{uT^Rp
zC-BHy=m33S5TvQ}lKW-OS+)$Wac}^3!48$4x!s4uwFGX#HMpYEGk>Ry3F<+sKRvnU
zPL3(h(5&*L<`tEmIoD;*EL)~fC`4kh*sPQqq0%$ATc%hn#v_r)7Vg~!YgBsXHr|XE
zw4UC*OeZI{?*pSps%7e2QR$gW8E@G)BWU@2z9$q4&EO$Msr1abZWAq+%MApB!A<<e
z29=)qJ7o;u0nN*2Dt>(PypovNf9#yQP*i&6T$ee+&NriHv)N=c8l9rjGyfotOeQlN
z4u{vN^fq=g2e3dRXj{Ed{fF77_0;rEo=VSL)-BH4-OZdJPNn}OCP+{}xHZ>-CJ@@V
zRJ~UZYJo~Gd0ho>%_W6Q;Fgcv#{yLGZduoV$8o0g6yPfP_y1*QGfmKmppoi9vs&iA
cm-!A}0h)`@YUO@9WdHyG07*qoM6N<$g0_nLLjV8(
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..875f73c5e2080b247f9345f10677fdf42f33039a
GIT binary patch
literal 1350
zc$@)71-bf(P)<h;3K|Lk000e1NJLTq003qH001Zm1^@s642_R|000FINkl<ZXx{CZ
zO-Ni<6vyv;Iinc^8Z}PEDXC<U%%Uk23nhy}x)DU`s?dmwG6cGC)y1?39YYr(b|FGZ
z5ld;a>Y^1S&@}yk23ydYU=v%^IHPEjT9w2wZFC&x&FlHgeQ>?J=jhCPI@o*QhsX2I
zy`Fi0&;1y;uIo%udbpXgk~AfZ5=NO4MhSED?D9{gff7b_%#kpcfV)7%Ig~Iqh~YL7
z#KZA&d=f_7$dd(fTZyEE$uEjor-*_WB9vJmiX;jocaBR5Q~dHJb_rg-Um(B{V`WnJ
z<XzU3F#8io>=v<0@bb$o@Jrnzca7R(Z0s1XAWT3Ip+drl2Lxffs$=ZkW8`JbCv;0d
z5at-CLJ-9-2_r9OYL6*E6lSvV8^TzLVkM3&jLYQj>`NF-cAPj#g!afuKE`X~%Q}oY
zT)PNUCJ7^VOohc#=CNxj^ENg%zT<Mat`S#>D|tZ9HH@)anELwq%QW|G;#=Zo9*}bz
zV{E8n$5Qt32bVs)`fkT$Z!G$2?|YX<h#!et#5bH<JT`(H<YJ7;QdZRFpPiVPxE>CN
zACR9SR)}Q_@GON~jKNqNg~^VOkAD;jh3=BSPCO;nEWopM<YG*bb;$P_cl7<fE5Q??
z5ns(I<`11AA{Lxs$U!c~<l9^JElf>KjeBft?7OC>rX~7)j`*FJlt63_ImpEryM>`H
zbd8RVe%8>?FipSD5ci1RBoLcH4stQ3$U1a6aK7nS<0rlGuWRe-7Rp0sS@2Xd3%>Bm
zPAG<F$U!c~n9Qdadt81*OTzr{@bDe_S;=FYM4AJi;Tg}F#~24T<ww+w$)Ta4ud1u7
zef)!^C3HMP4sva(Ll>F&n=O=;2UlWmzwv3MYvXbG@oE;V4HM6E!VEDyLk@B=MxMv6
zd(2`a5}6+y983g*!74uSCPznXU|=AL9OOE9Vp?o&Zl3M$@Bcm!2vo{-AlBE{_XBc@
zs6#gsgp<>9Oq*O`iMqPlrHijeKKG;+(mra+fWK@T_=sJ+5cvW*$i*0pwU~29_v}{~
zOgh)v+WLS#_^Qw6tKzX7e8k$?+GhAtmvc~<?K(O-I_~%M^o)5t9-O-Hp*8r3b#`{%
zv!M=IoSgA@urzLIY;$UrO`kh^I@$7K?R8gbQS*Cp48TY1T;y~DImqS9sWCohB}$?9
z7)(AFjYg;9@py*(697J9{AFaB^R`__EEXH@>gr06kAIRX_=wq9hbW2x=G`JP=`4FT
z|CCK%c=e_GFF(h=%&aDL03R_tLk@EJ7)_eXbV)1pg1JE?y1TpoATc}uK4SdYLD_a4
z)TuwWx3@0?_zu+}cgz-l*_&${?8(Cvn|ib5{4Y%vYc~LV#PEzSv4${Nsbg&auIyhT
zN&C%R0H4PW+P3SUjs7NZpbp(+DKk38IQ(oZ{lk`5*V%N}TP-&Le8l)ah;cYF6UNq#
zF%0*Ghn%%T{QAVHI&`U9WMMLfFt{_#K4yQWHdz9|=XWhb7_*Ma*}2Ea_JniT=2RV4
z9g`7Gf@v<ovpavWSpc8M(n4P5pgQLNV!B1whytaB?%9y;cNrmH%eV0>VG0*VlTT;j
zVL;mK#U(6faa2~qI3SRCN;5;-<?h0iFwX2ZatCQ9LTFO1z87(nFgAQ|W^w^FyFluD
z?G`1BGXm|#o=pi;qNapV!YEV16k+k#N&_W~>KJ88m?L2S0cs2?Tl1;c0RR9107*qo
IM6N<$f|C1(vH$=8
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..94a11fe5f9bf2b6b506de7e810893125d66b018c
GIT binary patch
literal 639
zc$@)$0)YLAP)<h;3K|Lk000e1NJLTq001)p000yS1^@s6AP5Dd0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!AxT6*RCwC#R=-QbP!N8pQL9#|8Y<C2
z=w|6AMI3}ck#=$tx^#7Oaq%~FP;nAE2#!u&iXaG%Vrv&g1XurnDq@AARja0nci~<M
zA)4qEqz^tWckgn!FZbTPC+ND){>$*Oe>7TTygEcLC9`{B2!Vbw$~KeEhX%ln-XLk{
z^AjE;V@g~kbPz<cW8x~{gP;-&LZSy(3$KVD&;tknI?0CBcn8z~FMv0)d2gASD$`D6
z`T+faUdk1#@Jv1pSCt6{g9ji6ZKfWp)#|L9tRO}i#IViOEyNgcXiAt@*V_8_DGLlq
zf*-gDz!T0yy$)Pz_m!>9l}YfaoA;A#H>*@Chv{@$357z819h~!{l(zB7>!1mIR@%z
zcX(ANu#^3zz0u(TCWXh?P$XtZ)X{GB{g#X*Nx5t`tE5sXMV4iT67@(Vl5<%VBSxW6
zP>=w|K#96T4Bnk^34NZIeMdVBGt078hPC#@P@;}@oF_lt-R#N0GGOr0VkVPGB$G)6
zWjr1)x~&Sn&tv5C`9wGzW++|8&?!+|LbaPm-`U38^lJCRHA9IyHGn$#H7g^0cQ;d2
zl|N1aO3jWTy6+jkjX~#3bI(vWLv)YJTI}l1cL~q0)X8`^GaA5;=Zxutr9Yp@e~ZD-
z65e*P0#88XnC3n$=Zxmn)@&uDQPTWI!1t6H%<E*V*A~IDr_7Q$?wQuDxkaW$#&&!O
ZFaW7c+#&_JSZDwM002ovPDHLkV1mS}92Nio
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..32e42b04cce15cb654b44bc882b264bec5efa963
GIT binary patch
literal 568
zc$@(^0>}M{P)<h;3K|Lk000e1NJLTq001@s000yS1^@s6#v#t&00061Nkl<Zc-rmP
z&npCB7zgm3ooQRvVYe);a!__J%f-RT!ByKv5mFSZ<YFT~qSTh8b`SQjNjWLIaiElg
zTqp-gE|OBNF8+zf^Q|YnZ8W3zEmo#J_4K^&wDWD>d1uB)M88Jv(wtfeW-&jrnImlJ
zS+yF>k{|(A$3h@=K*lVMU_TblW<l1#BCJV7(33H{7K1qwAj(=<9HfrQnDgymd{h9n
z4n7{iV=#-^N~jo1u&(;<3;}BC#guS1v%Cgd0RzDf!DXI$PX(1wN!G(s;ejFnYUw4F
za6viO@^V27U?A85cnIca0cH6mBtSo#jE?OSphi!|63Vg+Fu#`zngs*F_P|3hTXwt%
zYn3IJk|0YhnPURf(o12E%#Fyo_E#6ME%Izs<dy!OhamUtT3oRLpjP_#p9FJQNOrz>
zxMzkM`_>6!!zF58z6I1DeayjJIVZ%N&n{?@WyAy<1k_4@(c`AGBZ_QO6qSC(Em(6Z
zM{Uzb1o63Z>ezS&)E|A!aSH~$D*o{iKwZV>BCWzd4%L0PrFi#BYZot+KY60v@&lDS
zR&NMUqlYofab1elunfV#JyrnS%_EsTBQUXf41s}QTcEq$cV<rsOl<d4U?A8I=suw1
z<0S&^2ef)mX-b3cE7j8*%|rDo)&EQI&-k;SEr0$)Q{OvBF!wjVOs#+b0000<MNUMn
GLSTZZM*$T8
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ffde5f05086c366c5873e0d5fa383f45982ae002
GIT binary patch
literal 1742
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..61ad41ae9a01660261253aed82c21fb0bd5e10c3
GIT binary patch
literal 947
zc$@*V15EshP)<h;3K|Lk000e1NJLTq001Wd000yS1^@s64oxIB000AeNkl<Zc-qC*
z{ZCU@9LI41S#68G*wwbkXfiOmCovO^$^2n4aTE67GF_2uVa$ycH8WF!3%V*SvN%ZU
z)=gj!$z0H>!;nZM#K;!eDhy}_X+jo3<spF)B%1vP-@R{gvXF-M?3Y24SK6L$@BMyq
zZtuBgnTY&vYHuc$qNFNm^FF6w*;0i|QDM?yffY9OZc*c@>O_koK9~g=aKa4_Trglo
z`eKHQ4`v_>xp+d!g;&)qNl(Vhg-dX%F)dzM_!AyYupB&%t;L~RerrLg?5V%GQw4Ov
znyiTvO*oA6|1p>c{b)f<6Ko^4mo>-sIbH}#roUP2&m9oPo`e_nL`^c$hy(a&WMt$M
z(Fb#(58vVP;NakA^TMU#5jc>IeC#Oy{&v84@r1bFyDF}?TI9#bWSa`-hIOGP4xGjN
zsEoy8wTwG8!B(Lc&A1SWMC#`sqh`$tw`#t9f6Kj!RfQ*IP2iej?YkmPUE|lkj!F@=
zJUC&AZ(_$6cn61uhK9^w9!)R<x9}Ctb$53+#2-VW<yZ+Hwj8`LUixTJjrb0BN_Kgh
zggVE6Z5)s?YMYS*2h!&^vEobYMOic&tzq1&36_B#G$7p7)zz@jF=ite$YaI|T|19U
zUL{|uB2w3WZ{YLarHa~1$cGm;r2Tt>>gsCq(tLp3c(bCSVzcgl76=4f=4|0pg#3R0
z^Qx9GTvhAjuI%ElY&dmC)>r)|<=+ndz<3~OIINhPo2#M8yLcTZk)sK?VrpvYl)8E9
z(1CSkEzxBS^~$!k!N0GrKhz=l!9T=T5|)xPJ$2MxOL$oo`|Rwj8L$+uAc!@ZfcA-r
z2{Tw2HMoX6vzF+FIMXXdm!c0lp8Al0$9u%*56K%1-Idg~VeNu9gpx5cGh@zL2@3Hs
z+?s$HV`F3H42IP2+u=*Flstxw{Lfy!*#Dqo!;wze6zrA9i$k*e^v|Vccz9q-)XXtG
zJ#7Z`qX?(XaSg}l=%_h^^$6k@-69<Blb0{|-*12R=nW}2#sXM)RKEx-2AAuEx!y4=
zK{cjh3=a>R0l#5=tV{Cv%2WZLX&R6nt$lyBt$VvsuJla)q#j?ZVbe8pq86?Mb?q^l
zfLX{rACs+jAIRC(VJT2!1}saxWm*X*-0)&G4A>TV%anApX@fm(vzfM3;q=>d`~!#7
Vj86;-q7ncA002ovPDHLkV1n?!$l(A0
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..20bf78db21347a968e519564dc6aa39f4cc5fa78
GIT binary patch
literal 2768
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
W%1!dCU^AQm0000<MNUMnLSTZhvqmuh
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..37ccf8cfe312e7a2438eed5a3625afb6ce7de02c
GIT binary patch
literal 996
zc$@*`0~`E_P)<h;3K|Lk000e1NJLTq001Wd000yS1^@s64oxIB000B4Nkl<Zc-qC*
zdq`7J90zc<=I-Vmx?H(@We?D->@7t^^sv&NmY7jWvu0$`yO^7=vi>MvDV7ydQB<a7
zn^2=9BbTkRhe@fFkorfW7D9g|#;<R1g4^15?T_-nhk5Va@%P=i=iGbTi0Gfms{M^S
z<G~E${p}8J_WoBmcNRtjVvv9r`xJwSU3VX<a3YX`5`4iAMuHE>K+FsHU&DETm<7|o
zSO|kq2w~@x{D6OiLkob*pc-rdv~kb~qg;d=22xPNxW$Jn)=Oq4_9qnDVsRV^;SgXK
z(2ZY23Kw866odC5g2~|(T!uREbrH@BG)bk6kzVss$$R}7QbZZQY0tk+#Q6m<#V()+
zzZloh&~O9=4#Ey70);?8uC})JB))eI%HR>GT#VePA{$LBwX~XjH(w#Owu*d~ruU~@
z`mhz(7Qtlj2RVrBi}~4Xwrn<fDNqP9fq;G%izSzh-Z^*(N(Xa}gAp*H>?N(ruWqf;
zXe&sgGm&apMt|zn_N{CLLqQD^N5%Z>>guvkU?*rH4<rHs{mo``E}Ir5@Bm~ER;vPn
zU{>jKO3t~}QXinJqQLFdq+XuUzw=t>MqHZ-fgp2MEC{zN69p0>0SZ7Y5HP5+vhwE-
zIR$xa1f{%i!+*^?h=7>lr=&NQzk50UfR)DXt|8wj{Wk<$!dA1=X|d$w<oWpL8)2P9
zBH69e>6AhXBsMlS2H($x<DQ<L7vtjMRIb87N>Z_{JoJ#2CS|u!aD3swzVeSNT!up%
z4@Oukm&>>H_4OHWo)cKPQ^5>59LJsM>FLQJ^x=i`<lk0Uv-bG?+~9-~nrwVQVY^HN
z<~Lu<^Xh4?)7y$R2GU?9f^F&T?M)j*uy8Oz7Dl<Kv$Hdk1#`F{VBYGZ7JYDhK1JxQ
z6uzf=;Kqx-+b17Wl+y))76^x7nL?r1)ZN{!$9XS-V4+Y21_aA*Z*R|FeH=YX{9s~q
zx+x`OLjg@U)KkR%I|J9Bf4Pkji($_?e^7vkUxb4kSdJp`U0q!WMlyk5GPnmu%&`+~
zZEcyXkJE>+_FPkBK(wA_q&=kR2k(Br{;c<A!4rxWd<Zu+H5tTWv96<|!+>K2xC!8_
zR_ig5NOZQjxjCElarycxc}5d2*0kOXOFI3%;_0UwI9|wJUxD`TSNme4Asu{#g9-O>
zFz38MV``x}?>|$~rPnl@txS!5u%X;Csd-x_mHn1!s5hI^zu9aK{WhHi<NE=V;9OG1
SV<(^h0000<MNUMnLSTZVzuZXx
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d319accc51cf1b9d0dc2cf4224f1349def1eeab6
GIT binary patch
literal 2732
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..73c778af033150dac75d515b11763bf2567395bc
GIT binary patch
literal 184
zc%17D@N?(olHy`uVBq!ia0vp^EI=&H!3HFw3-t_ulw^r(L`iUdT1k0gQ7VIDN`6wR
zf@f}GdTLN=VoGJ<$y6Jlq9{)n$B>F!Z_aje9x&iwxnSJ!Wb=Q!*wyk$TSGNwE@W?i
zqBxPUW0l`*g++(VR)0MtU6yf8*+Hf)pZ!aVq=C$?uQBG|-nZ3jG3uUI3+ZEjezQr{
g-sa|_9jp=zFTQYRyzwxc5445B)78&qol`;+04@4JlK=n!
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f41b253d0bce22c49f06bba7bdf1934813ff3562
GIT binary patch
literal 466
zc$@*!0WJQCP)<h;3K|Lk000e1NJLTq000{R000^Y1^@s6Mu;cy0004*Nkl<ZNQu3b
zT}uK%7=@oUQ&}bYkS+{LEkp#9pz_))5s5B>GEme0|9?1L_%3d;AF~cLaISXdJe>2+
zGLXEE_H+!CGIX49#%aX?CqNYlff`UxP|dzqZGRl>1S*+H3+Mxnz!UJCpeOs@xBWFc
zp9_o<)$MQ(K+;gsI734_-?MY|Si;OyWuOc6Bt1y#OS+TP%FvzddoW<vd{Wazsj9#W
zP?FS<bX!0jt8ipKsp;ag8cVu1SW(>q<GtCX!cKvSq<cy219T5e%*P2f%b8K8fSD`o
z40!W|y_rug>;iZ%crpG6csHL^SP)D0ap1h#lG?yWELo5SD+A}i+_T2H`IPfu7r;W>
zAN3#s3-if^T>?vo|0z|#(tMm?E6<s&ion*MGg}vdeS6mU?E<R+4NK-z<Jx>GF0dcZ
z+xP=qrNIJr&r1{7c-FW9uGu{^K@uzk2EdnRji2Td?!$uE<!At}z{s=4k@+-Ymn4W_
zA#ejs*}i3=q#F-~Y~Qr0`GyfJs;_C$kyP@PwKg!{sLuaeza+5;BST<b1^@s607*qo
IM6N<$g3(jcA^-pY
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a8215a283d57a01334bd53c4a864ad373cfc4cd8
GIT binary patch
literal 891
zc$@)y1BCpEP)<h;3K|Lk000e1NJLTq001@s001-y1^@s6!Hvt-0009*Nkl<ZXx{Bw
z(M}ps5Z!xsy9icEL1PRL7L&H|0r&@FjQFSzeuS?+@Bt=%gP*_?KhlIi`qYxP35J?h
z5~D`j7<W6z%q9Z?VPV-#=}vO8T*A&dvom*gmwUDAy2d<08^V-QejrT?m=i+!kT$j^
zX+43BX^PLo(Ii-mR|K1nlfXOI^Jn&P`7-S@ASK8=0T7g6EHIKj;hpFCv4wx##~o;3
zO8njw0j(0=61E6Mfr3xSbGO*%stC{&T2;^)lR+&K-V^eKEMM(O%6bsT0{hG}$KrtC
z0trl(ADk}}J`i57tgNWBvoovNY}(y!cY(UmRDciof=~Dc2Xifpz{V;`?W0-1af+~s
zD|m2lV6|GUM5R)(3Wb8sWHM8y3qIfrKH(c2oUKjfHpguy+DEoPuz}8XczCF*)vA?F
zryUw!6Mhidgzr<L&AzVT8yw)`Zn-g_nFNxtH-sgW$octs!m_Lf8eec=e+W+j%&{l-
z1)mq-02i0#5^K;wmLf_ZjluEpv6anc@95(t3vp)z_`U=eI9W?t+}{E#MNDM1x3`D!
zl@Xp@F{jr|0xd<wH%=p;&)?F)2{AB-IStkjcvpPBQnqd18zCEW_UH(r6nih9<2=rA
zUJV3uj?^~kBh@opyc2|M%<1cSQ5$n=abU7CBErny$D*>CypPRwDax)GD*C!&T#9ii
zGNS5=amM1n;;tBX#kdqhDaE<JkIn5Io4ePRxD@}jQjEJ|T#6BwVvn;3OL3^CIAf!-
z7O_qJPp~p3*oF{d=3dk_&Z303Osf)!gh6n^o@3wyH|vqhwZ1YY7yIN+0V9{oImu))
z^hF79f}4kO2f@%qKs_Q;CSx66Zf|ctMim&idAKfg4b7Y$GBIV=-VrjXRLVFxIk}5!
zVu2ePpoKN{XG;wY%w^*`#_pJ+m#x#&)BClxwYyHIqoV-0p+RJ=$Qmu7`{h!k-(X7u
zQvZvt(k<<jdD!3If2!B(zZ;E)9R<J*4bTEj&<2gHb^NYKCtMM})M~YF<#M^(ZnuAu
zxi>dAW)uK7G(Zb9K^rtqe1qQI-ThiBl|Jt5?0h;pI{F+XpaEK->A!ut{|kuaLIcUb
R+(7^U002ovPDHLkV1gobpZWj*
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5987a2fe32d7e26d7b0ae3f80625e69ae9b7d45f
GIT binary patch
literal 520
zc$@(U0{8uiP)<h;3K|Lk000e1NJLTq000{R000^Y1^@s6Mu;cy0005cNkl<Zc-p;{
z&q@MO7{$x6@o%N0NhMgT7K%n-h09hI5iWvqktX&GK8Nq%L-+!MAPBC+r5kZ2x^ivj
zz$b~#=*%5R__?{?IlsC04$R(ix%>lu`x|J$y9I4CW7caal7a)^2SE@5VG}~K?w5JZ
zN@ykWO35WigBy?sw<hFeJuUMg$%}BiOp_<hfE)<S=ktrjVv)Ck>ztGMjN~;-nTUuE
zt{9xnW~u3Pnw(4~@zH1$v4ZQI<2-Yc*Ee@(wktol1Bc`BIL0!&aGp7EFFl&6Y~!vT
zI-O2{1x^_Z24Ut`cehJ+1RjUOVXWWpN1VbO^X#!Jdtp!&=IzQjTy!Zbvd50h0B^ls
z?^qS)*|SaNS=-q=F4|Cq`L&&StYkWff|5&FNqY2MG7f*@)i+dOo;`MCF;I3XE3?P0
ztm0BuaU!d>+wG_-%sY{N;T4Xn!n_@s4{*5J?RI0TFfTnmJF=QfSq&siWg=RAUe3XH
ztJOMDg?W&aK8^imvLMKUTC>?qs3OOhmA+q@h=?vn_zIpHjmDWO%u7#Pdc}c1d4d#p
z1|^WF*XyUMFb_VYFD3o($nnWtU4x@Sp<uX$Js>B&L3(&+|Hco0k8&{9QgKlL0000<
KMNUMnLSTa33GZ$I
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..658b291d3940b0a53d321f54ff86e2ade53cf82f
GIT binary patch
literal 968
zc$@*q12_DMP)<h;3K|Lk000e1NJLTq001@s001-y1^@s6!Hvt-000AzNkl<Zc-rln
zu}<4i7=^Ko?Igs;K-$7kAyo<sv{HlALP|qI)25*<bjd3q!HC4d!aMK+?2K%PfdPaV
zcml-00t;`zLjO}8WHmyCVBdQYilq-JQuLqm+1D3EcF)bt&9mg64;>yBAT}V*Be4Oo
zVjg@X6KfOc6<om+d?Aw%pR-)fjztxUS>#s8W0^i75JDj$1052PkhA(Y+lvL6pR$-m
z9KmI1UU)5x3m=3Tp^}gp&Kl?JJhNP8TOe&Qhi5P=3<)KaQA~+hS!O%wiN(v$Wxy+;
zjNl*$KCiB>P8}Q^OkQ4ImSo2JBwz++VJ2o%u8d4(yX;~m7mM$y4A0&)0&BI}r>m<g
z%A^lwBZG3&%+9cjokXmC3Fd_orOMaW*C_B#7!_U!kq{&#;;d23Mh3DdS7L{FNhT8G
z)#A-O8%0s&;^G2VYD@@)ydpwmAPbquW(Qui<YF$j-w6y~US6J-?-miRi6Sy7Ho-1#
zQZbvCJ`kpa>dwy2WPGKx5F!)V>=3Y%om9*hLY}ee>FMbk1nLBt6q{uiKMk>r5D7JK
zc6Rnsw-_>!O(JwkD(19{ot&KX%Xj;9g3LR_oHWD+ggJ10d>rZ)LngAxKv%32vBSed
z{3Ffj1esm2M~Hm^#>AMfOl*IDA6sx%C&*MORtLt!n6E<YD=;R;d}U(0ySvzeGde-0
zO0jRim>BcBVx5Y~PY7(mzD|&-Qmg@ti7{V=*mqz|jQPsMwzs#j1$#O{rb@9UFeb))
zWnx=fTiB^wogh=C*gP;M#{8~Wr(&C%o7ky(b%IQlVn2W}G3Kif`w5JRF<+V3#>NJ=
zU`Hp&R4Mig7!zZDnqt`}D3(oAYym7SEny3`b%M;>{ItaepODyKGO_rfUrrc$Dq`%C
zV>j!uVi=g`!|g@i_ZM2N7S_F`6J#PA9ngiH+)l+T;t0ObFBCC!czAeTZe&}x7&4Jf
zu_8P9>}Y|9irG9PIj-pnhBg|F83dUC*%Yg=Q;r?&hlp8syeaTe_>H9??_i9X5<@mR
zpbI*+zd-=*6SH}lM}#s4fwi@@sq^#mk!rQtYXW4W1G<nhJNoE+zgT<}gretpb1N$=
z<)fpcx6NiV#1b$8ve5xu&<Wkxk;nhVoWFk@r>9UT^wjHhPksxH?CtFp*Vota95^ru
qI-m<Wp&L4)D-Wk#>^brL#r^;aVB9|VL(Vk-0000<MNUMnLSTZo*|tRh
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..930e76588fed21ab53cd454f1e7f0d82989b814b
GIT binary patch
literal 611
zc$@)a0-XJcP)<h;3K|Lk000e1NJLTq000{R000^Y1^@s6Mu;cy00009a7bBm000XU
z000XU0RWnu7ytkQ6-h)vR7l6Imd{SYKoG{aTc9ZZAtZW`vtEe@z4}1D0Z(8;;#1&F
z!^KzdiWeWi1dkr%Kp+@ezaig{acMwWH~D3uo%yD-J3Fn<vdjq>5%DB8R6unDmB3y#
zmYN#FM;t)_6{v#)atMyVvEhi<)uwJ9Y!z5zNC3w`cEof(2OV$?uC~k_+8@y04sU~`
z=Asxjzy<g~`aSRf2H=T2n%@K7?}<JA8fH0H`ZlA8vn;_G7((C;a}&IS*A2-1Chdpx
zuLio#XRHp4%sfR4m!C0@z$ciy&0|ix5&c?bwU)XP$Fn$`Njm}i-1u!l@`4`HKQY_l
zY=LM-TK-Z|Q#$X;l>Vxfx}XZfvn9rpg25)ix$|K)hS`bHg8z4ALH}P_<(0lOU1U)L
zZ>w-s`m9F#6zM+&vwD$MqYrwbtaq*8eknETta_xx@i}cp(=U^m-Hx?Avumr%S|+oI
zI_aih_BHceFwnPsy=)8S+1JEzM(4jWqhB?rBG-atCg`HT-l=^Q=&c3w=6`Hj&#tX%
zZr*2B)A^iPmvYXh+$EUW`=A<qSn7Hs;W<eQ7D!6}B+!lQLDu<%%TcB`PN`#cmxo%<
zL(Hd<?}&cMbJnL$Lfz&0)y(!l8{Dvu-InMgj{Xt#+SK=&;wkuo(F?dVub865q9b~u
xOZ|#;{XVz@_qfpIcgMKoGLEU!6<zB0e*i9U&Sf}`W>EkD002ovPDHLkV1gtsBtifH
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7de41e77b273e66b7578c11c96efbe054b1655fc
GIT binary patch
literal 1098
zc$@)B1hxB#P)<h;3K|Lk000e1NJLTq001@s001-y1^@s6!Hvt-000CLNkl<ZXx{Bw
zO-LI-6yBL^^J9pyq0y9DgqA{W)rzsj(nG--C`fwrBJ|K>@tRxdwFn-1@72<K%_$Um
z@Z>=~6h)*69@9gGVinpn>HF*(9oNk!n^iZ|9r&2tVfTCAoA+jRVV*QxG%2O9fl~`L
zfKxkR%av9)PHDHe7PVSU5>y}3U@}4tVE5c1r?OK=gEz;lv!xjh(JgRELxd4_3H6@N
zr5sgG+UoHfG36A$1BXl&0AW!=OzS&bB4*(TGq=gMr0$&Oh-ovUW=)S$n8tbuLxe|!
zaYBwTL3rX46a4NtbAhv0b1=jaRO#6;EoC!n3hAIZg;`9}*aPZE2-gV-9{1Wz<^tyk
z+em7W3$d1lYfidIKNYbQjXk73-QV9IFO^Eq%H{H_{r&y7H2%&DzyU6Bf*Us2R!XI0
zvuP<CrJ&Y>xRXflW1-K^&JL}vuD;3Ta{2D=?!IU=8uuD5aDWS(;D!y@Vw;_;;h461
zQIid#CG^dL?gwCKZf@>gp-^}kiA1ml%7m|kb;1{qSZA&>xM2gf*tr4AW+J@qih_wU
z)L$7K9E{J*%)Agn?9%-PJGMutU@knO!d&3ofDPD!P1t4)QvbHK;+W8$!7TM)jAn40
zX7d+aZxMbIs%HdnZ^0I9vYsAotr<=Z%4YsBnCvnJhKGmmQn!5y(P<XjY|~&3p=SO_
zWD{wq*4e@4kV>V@Gmg}W$gxd>HJtd>YITiC%{gJ3=I%L0>i}$1ShSqVFO@z!d*>J}
zg}pjjT6Rp>kX3wetkOV}r=MVz*EOFYnvIr|V@@PhpWsSoD-rX{u~UhdQ){P)1&#%&
z_&-MMk53397Ob(0vfcZ&#)4D~A{J~O!3R3{KnD>EB6blXCfabj7iW=*!3VnCKhRb}
zzc&xzIu&hBEo2*S9*)|j8nhhG3d{LeyG2aeY1REeX^-PcCIiJKBArf${c?<L3)Ui?
zPB!6_thcpWN+57*Z;XwNCH+c8wrv<k6$Gj@!uAuO*Fqh;=7a2m>KnShffuKyrf&Kb
zF}5vOi>lf&?X=@sTGo=aoG3~UWvRbPEt1dYZ~5gIY(oRIu%@VCDNEAVp5!AMJrz}y
zGF)HLhXuK?u<$gQOn&prG1!I%-W>X%jjIThb9yQsmgA}Nx)`B@fYbSFC_%_%GLfaF
zrF=G<MJg=&xZN*91GGRBv_T`ZvgVjxCMb>LRcvTxS65eca&j_0KR<tGb93|g=;-Ke
z8ZQxk__*D}b_rUb3EH3$T8*PRuEVN1L~N1pned76ac5`eL$O$VJv}}BIFU&Fqz8+}
zzp9z4&wz#^G(j6QLMt?D`r*r>H0oE#d?&0B-V@f^z$t|_*0jPJZ7YKQ0=|nxD8hth
Q`2YX_07*qoM6N<$f{=0vr2qf`
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a373cae538b323666b9a0a363077c00f73c1a0f6
GIT binary patch
literal 599
zc$@)O0;v6oP)<h;3K|Lk000e1NJLTq000aC001Ef1^@s6?MF%v0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz`AI}URCwBAWIzC>TeohRN=ZqDu(Pu(
zg9Lv5{CW4;vuA76)YMJ`x&J_7j8Mfaj~_oyWaW}doVWR>^8IK3_(6h-QcNF{eA(~*
z{`PFXtgP&OpwJ(X2Bw1t58B8mTX!|j`(gC`=YLitTNyan8GlzNa-4s1=Wwy3qvJ6a
zpcsdaj!yjaO}~^tih-tnh<0bc2U5Ir=T9Y|Z34@8{Zh*G(@6jdonrzLJU}3Q>(M_!
zkfP!!&TBf#%%4CQ#0H7oe*9OEkB?6Vq!y%s{r~^}FuyST{fC{+$jAs*3nCbvKY#vC
zMTY4Eh&^@9PxUt+{<DEFhz$}`m1TYp43sw@HZ#Z%tgNh@3DNEf$1ndCd-?7k&$eT~
zWkLAu$N!ulPiKX&U!OX$b^VDGC$54t{6BW=*bg%!Rl)RVBj%^C|8cx}_n#YNnyw1-
z>#|smD~EP3KUP*&whbus0vusLECR&VNl8gnK>zFyum1cWgh6bO7)TC?g`sL85eL;|
zgRTK229;xhDFlH(K>QA7B^r1EmHWqlYz5G?e^8C+;15)e0Yw9`U{u4XhGDFM1)HFn
z9P>MZ8h`~Ai28T^`t>JGX_{a$5E~>0m196Iy<q^9*|mXK2FeF%xC+E?aA{xzVm=_|
lg7Uus@h2eu1ycYJU;vVP)d%Bn|FQr8002ovPDHLkV1fx!3_bt=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b51b873cbd928ba222d9244eaf5c06562d699427
GIT binary patch
literal 1124
zc$@)b1e^PbP)<h;3K|Lk000e1NJLTq000;O002S=1^@s6O=1>l000ClNkl<Zc-rll
z+fQ6o7{yygLFr%_m_m`Nq!(jSLrhB2l%e<+7%N^Ld~b}2CMIn(R*gUhi*hSf(^t8f
zl-kBx`%+`P#RQVlN9_o&CI$p41%`nk+w}|G!#)h7!`SmMiC^*~oBgeCt;0EI&V;jV
zN3bLl+eJVWiJ&MIWg;YYvPTaM+DtzGWLzx5qDCAPhs0rEeRuCMG-xvgZDw95LSpa!
z1CKWh4Sn7oi^YDPpP!#xU0q#K#b;+{e`jxCaIhT>T4tEt7_!m4NbC}|pY`=c=jP`A
zF#l3$`uh9Zm|+$VH)P|HS5!S*T{ki^a>W|Nrj2?3Cu16ijHx-l#?xA}N6!{B%;I7H
z5;q_qLZa51FDH#T^@B0hpBhv3$>z{|^E+eWE9)V6;Dx6RAgNgF(>Xn3&0o5LNp`&W
z<=PB|2VQvMZI3>@Z~uX#^9u{ph~EBQgCB2=Q<|X`78a-R!V_--ibTzY3&ULqZYiQ#
zN3~l+mihr>u1)BICV(}2UJWzMQp3X+yYR%DfS@=yK0ZE5^SvLvgONdFZZDa%VvnAy
zWtN(lm>8AklXw$QDh}y(Bi}T5hdA1dMbFhTOW`HYI=l%e6Ni(@<O<C_x-%-zrQnog
ztodcHmRTyP!V_--Lj1C{w3PU-0ejD<2c%BX<mBWG&B%av=<AH9h@My5c=r^|%*@=j
zrzmxiZ`>HWMe|*KxGH+riS!#Yn|6`eqvzGWqghH`F?*3yw`q4z&oIqj|I~eb&O2By
zBaZe?0$8)>)iA>>C9jL_Z5j|^Jx7k~DLIFLkN>XTt-%Z>k2`xFdGxsbpt+BV`e?N6
z3q*;eG0$Jt;MweGy0kV!;UTYx`>23`C@&6{yz<r6tD`pLEge;5Z)Rh9C%;{P*fEO-
zUU;TGuGOp!m4{DUzy8e_1NNHmoC%-x!rm|H+0x8SX7NaSTst8}5;Ta{o10rMO-)Vx
zWevhTUTmRhX=%O846_-&aMD8R#cLH6m7Uh8yvK_zG-yS{nrHi^|CBh93h4G?OPZ5t
zv;ER{35%oFsI1$IEi`ED+*Si3Sp-DxNkFK}B_9JyJ6(JT*xBjeOF)N<4*?H#IOJtO
z$ww~v7!dr>B_9KJw7cYEKykZ+9{~@ZammMk2R?Ag$AF?XmwXH;Y;*7>AnM{n!2MAN
zUjk0M_z-a4X@~p_Xm#-+AkgZNmjMMWF8>E?60p6+!Iyw$mwOXXE{<doa0G2G0i~iY
z9*-w5s_Hamn~Y(%)|B2cEu%r3OF&ROp;t4%VRlVFF|O`fTT}GVpv@(qP*gqF)YP%K
zxS00Fh&_5}(B=|QAcFc2{+VZw9qSq!yBXuP8?a`N9vZZ{1VBJk%IIbBs(1rfvqujN
q+FS#mKxSp4QM>@G*>jFOBYy*S4<=5a#&uf&0000<MNUMnLSTX~1rcok
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0e7f271a5d67058ca678b238595523806ba72ec4
GIT binary patch
literal 291
zc$@(v0o?wHP)<h;3K|Lk000e1NJLTq0015U000^Y1^@s6prP!v0002$Nkl<ZNXNyM
zQ40bg49C3_?xpA<ih2oxo+1c(4T8Q~->+|UE&pI3YN<PI15wWHe%su%Bci(sWi&(E
zSvhO1coO`tGvHeTP*MQCGQhsRFTQ=C5AY>Jv3dqR;J*vN=M24M>Nu%BF&uuG(c4)$
z>ps^W;G;lQj{qMShLckd@V-J-r}U#|yvy*oNmXy8+G)i|)#RHE;CZASO53Hly#O8<
z5mvcCw8$BM`JPIB6|h*u1H-Pg*aCZiXHpR_D!ewuuN%NiGsrqYjzi=WpT8dq;Fo@|
pkHuOl)!P;~Qx5nc^+-G=z;9-gn9xjFnM42p002ovPDHLkV1m$;dnNz?
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0c7a196de516f54cbd1ab19b06d46236c43ad206
GIT binary patch
literal 394
zc$@)>0d@X~P)<h;3K|Lk000e1NJLTq000{R000^Y1^@s6Mu;cy0003|Nkl<ZNQtG6
zF;Bx#41_OLN~j=6K&NahbP5YuqAu+~Vd(#@Sm37}ixXL{{qhnbeX`%(*$zm48IB~+
zQnhAt1LuUN=T9Jcl846AjwJViKFoOjxC;}*QwKZ_!Q37qY7T<cJ-Uf(r{DIN9qj1;
zL}wQz<~n_>b9j^5J6>-xp6_`*%z<cu=X*b5b)A0)$(=*%XfH-@6P^p4P%FbZKd=k3
zt_PBhh?dttk7!K2+BY0)NN!c%B=jhkVoS1tG)t&Wodgp0s4}%2zam*fno0#LlFt)M
zbGX_80OP@^pP<gkLB2v*35BW}I9dw3zkoV2hhnB)N=3Plwdz-aZoyhnn)h71d9Ara
zHw%tLGo{*z>L1(+k!Lk*0)|DAzX5P3q%wL3>VOBS_ojN8T=3-ZI8)CBr<r^tywBte
o$sfZ-)eFgAlHY-EXT3cme>5FoW_=%r=Kufz07*qoM6N<$f^37SIRF3v
new file mode 100644
--- /dev/null
+++ b/im/themes/tabbrowser-pinstripe/tabbrowser.css
@@ -0,0 +1,579 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://global/skin/");
+
+%filter substitution
+%define loweredShadow 0 1px rgba(255, 255, 255, .4)
+%define focusRingShadow 0 0 1px -moz-mac-focusring inset, 0 0 4px 1px -moz-mac-focusring, 0 0 1.5px 1px -moz-mac-focusring
+
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
+statusbarpanel#statusbar-display {
+ -moz-padding-start: 0;
+}
+
+.statusbarpanel-text {
+ margin-top: 2px;
+ margin-bottom: 0;
+}
+
+#convWindow {
+ -moz-appearance: none;
+ background-color: #eeeeee;
+}
+
+/* ::::: tabbrowser ::::: */
+
+.tabbrowser-tabbox {
+ margin: 0;
+}
+
+.tab-icon-image {
+ width: 16px;
+ height: 16px;
+}
+
+.tabbrowser-tab:not(:hover) > .tab-stack > .tab-content > .tab-icon-image:not([selected="true"]) {
+ opacity: .8;
+}
+
+.tab-stack {
+ /* ensure stable tab height with and without toolbarbuttons on the tab bar */
+ height: 26px;
+}
+
+.tabbrowser-tab,
+.tabs-newtab-button {
+ -moz-appearance: none;
+ font: message-box;
+ font-weight: bold;
+ text-shadow: @loweredShadow@;
+ margin: 0;
+ padding: 0;
+ border: none;
+ text-align: center;
+ -moz-box-align: stretch;
+}
+
+.tabbrowser-tab > .tab-stack > .tab-background {
+ margin-top: 3px;
+}
+
+.tabbrowser-tab > .tab-stack > .tab-background:not([selected="true"]):not(:-moz-lwtheme) {
+ margin-bottom: 2px;
+}
+
+.tab-background,
+.tab-content,
+.tabs-newtab-button > .toolbarbutton-icon {
+ -moz-margin-start: -5px;
+ -moz-margin-end: -4px;
+ pointer-events: none;
+}
+
+.tab-close-button {
+ pointer-events: auto;
+}
+
+.tabbrowser-tabs[closebuttons="hidden"] > * > * > * > .tab-close-button {
+ display: -moz-box;
+ visibility: hidden;
+}
+
+.tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox {
+ -moz-padding-start: 5px;
+ -moz-padding-end: 4px;
+}
+
+.tab-content,
+.tabs-newtab-button > .toolbarbutton-icon {
+ -moz-box-align: center;
+ border: solid transparent;
+ border-width: 0 11px;
+}
+
+.tab-background-start,
+.tab-background-end {
+ width: 12px;
+ height: 21px;
+}
+
+.tab-background-middle {
+ -moz-box-flex: 1;
+}
+
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(ltr),
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(rtl) {
+ mask: url(chrome://instantbird/content/instantbird.xul#pinstripe-tab-left-curve-mask);
+}
+
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-end:-moz-locale-dir(ltr),
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-start:-moz-locale-dir(rtl) {
+ mask: url(chrome://instantbird/content/instantbird.xul#pinstripe-tab-right-curve-mask);
+}
+
+.tab-background-start[selected="true"]:not(:-moz-lwtheme),
+.tab-background-middle[selected="true"]:not(:-moz-lwtheme),
+.tab-background-end[selected="true"]:not(:-moz-lwtheme) {
+ background-color: -moz-mac-chrome-active;
+}
+
+.tab-background-start[selected="true"]:not(:-moz-lwtheme):-moz-window-inactive,
+.tab-background-middle[selected="true"]:not(:-moz-lwtheme):-moz-window-inactive,
+.tab-background-end[selected="true"]:not(:-moz-lwtheme):-moz-window-inactive {
+ background-color: -moz-mac-chrome-inactive;
+}
+
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-start:-moz-lwtheme-brighttext:not([selected="true"]),
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-middle:-moz-lwtheme-brighttext:not([selected="true"]),
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-end:-moz-lwtheme-brighttext:not([selected="true"]) {
+ background-image: -moz-linear-gradient(hsla(0,0%,40%,.6), hsla(0,0%,30%,.6) 50%);
+}
+
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-start:-moz-lwtheme-darktext:not([selected="true"]),
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-middle:-moz-lwtheme-darktext:not([selected="true"]),
+.tabbrowser-tab > .tab-stack > .tab-background > .tab-background-end:-moz-lwtheme-darktext:not([selected="true"]) {
+ background-image: -moz-linear-gradient(hsla(0,0%,60%,.5), hsla(0,0%,45%,.5) 50%);
+}
+
+.tabbrowser-tab > .tab-stack > .tab-content,
+.tabbrowser-arrowscrollbox > .tabs-newtab-button > .toolbarbutton-icon {
+ border-image: url(chrome://instantbird/skin/tabbrowser/tab-top-normal-active.png) 0 11 fill repeat stretch;
+}
+
+.tabbrowser-tab:hover > .tab-stack > .tab-content:not([selected="true"]),
+.tabbrowser-arrowscrollbox > .tabs-newtab-button:hover > .toolbarbutton-icon {
+ border-image: url(chrome://instantbird/skin/tabbrowser/tab-top-hover-active.png) 0 11 fill repeat stretch;
+}
+
+.tabbrowser-tab > .tab-stack > .tab-content[selected="true"] {
+ border-image: url(chrome://instantbird/skin/tabbrowser/tab-top-selected-active.png) 0 11 fill repeat stretch;
+}
+
+/* preloading hack */
+.tabbrowser-strip::after {
+ content: '';
+ display: block;
+ background-image:
+ url(chrome://instantbird/skin/tabbrowser/tab-top-normal-active.png),
+ url(chrome://instantbird/skin/tabbrowser/tab-top-hover-active.png),
+ url(chrome://instantbird/skin/tabbrowser/tab-top-selected-active.png),
+ url(chrome://instantbird/skin/tabbrowser/tabbar-top-bg-active.png),
+ url(chrome://instantbird/skin/tabbrowser/tabbar-top-bg-inactive.png);
+}
+
+@media (min-resolution: 2dppx) {
+ .tabbrowser-tab > .tab-stack > .tab-content,
+ .tabbrowser-arrowscrollbox > .tabs-newtab-button > .toolbarbutton-icon {
+ border-image: url(chrome://instantbird/skin/tabbrowser/tab-top-normal-active@2x.png) 0 22 fill repeat stretch;
+ }
+
+ .tabbrowser-tab:hover > .tab-stack > .tab-content:not([selected="true"]),
+ .tabbrowser-arrowscrollbox > .tabs-newtab-button:hover > .toolbarbutton-icon {
+ border-image: url(chrome://instantbird/skin/tabbrowser/tab-top-hover-active@2x.png) 0 22 fill repeat stretch;
+ }
+
+ .tabbrowser-tab > .tab-stack > .tab-content[selected="true"] {
+ border-image: url(chrome://instantbird/skin/tabbrowser/tab-top-selected-active@2x.png) 0 22 fill repeat stretch;
+ }
+
+ /* preloading hack */
+ .tabbrowser-strip::after {
+ background-image:
+ url(chrome://instantbird/skin/tabbrowser/tab-top-normal-active@2x.png),
+ url(chrome://instantbird/skin/tabbrowser/tab-top-hover-active@2x.png),
+ url(chrome://instantbird/skin/tabbrowser/tab-top-selected-active@2x.png);
+ }
+}
+
+.tabbrowser-tab:focus > .tab-stack {
+ box-shadow: @focusRingShadow@;
+}
+
+.tabbrowser-tab:not([selected="true"]):not(:hover):not(:-moz-lwtheme) {
+ color: #222;
+}
+
+.tabbrowser-tab[selected="true"] {
+ color: #000;
+ z-index: 1;
+ position: relative;
+}
+
+.tabbrowser-tab:-moz-lwtheme {
+ color: inherit;
+ text-shadow: inherit;
+}
+
+.tabbrowser-strip {
+ -moz-appearance: -moz-mac-unified-toolbar;
+ height: 26px;
+ background-repeat: repeat-x;
+}
+
+.tabbrowser-strip:not(:-moz-lwtheme) {
+ background-color: -moz-mac-chrome-active;
+}
+
+.tabbrowser-strip:not(:-moz-lwtheme):-moz-window-inactive {
+ background-color: -moz-mac-chrome-inactive;
+}
+
+.tabbrowser-strip:not(:-moz-lwtheme) {
+ padding-bottom: 1px; /* 2px in Firefox */
+ height: 25px; /* not in Firefox */
+ background-image: url(chrome://instantbird/skin/tabbrowser/tabbar-top-bg-active.png) ;
+}
+
+.tabbrowser-tabpanels:not(:-moz-lwtheme) {
+ border-top: 1px solid transparent;
+}
+
+.tabbrowser-strip:not(:-moz-lwtheme):-moz-window-inactive {
+ background-image: url(chrome://instantbird/skin/tabbrowser/tabbar-top-bg-inactive.png);
+}
+
+.tabbrowser-tabs {
+ -moz-box-align: stretch;
+ height: 26px;
+}
+
+.tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox:not(:-moz-lwtheme) {
+ margin-bottom: -2px;
+}
+
+.tabbrowser-arrowscrollbox > .tabs-newtab-button > .toolbarbutton-icon {
+ padding: 4px 0 2px;
+}
+
+.tabbrowser-tab > .tab-stack > .tab-content {
+ padding-top: 2px;
+}
+
+/**
+ * Tab Drag and Drop
+ */
+
+.tab-drop-indicator-bar {
+ height: 10px;
+ margin-top: -10px;
+ position: relative;
+ /* set -moz-margin-start to -1/2 indicator width: */
+ -moz-margin-start: -5px;
+ -moz-margin-end: -8px;
+}
+
+.tab-drop-indicator {
+ -moz-transform: scaleY(-1);
+ z-index: 2;
+ height: 33px;
+ width: 10px;
+ margin-bottom: -33px;
+ position: relative;
+ background: url('chrome://instantbird/skin/tabbrowser/tabDragIndicator.png') 50% 40% no-repeat;
+}
+
+@media (min-resolution: 2dppx) {
+ .tab-drop-indicator {
+ background: url('chrome://instantbird/skin/tabbrowser/tabDragIndicator@2x.png') 50% 40% no-repeat;
+ background-size: 12px 33px;
+ }
+}
+
+/**
+ * In-tab close button
+ */
+
+.tab-close-button > .toolbarbutton-icon {
+ -moz-margin-end: 0px !important;
+}
+
+.tab-close-button {
+ list-style-image: url("chrome://global/skin/icons/close.png");
+ -moz-appearance: none;
+ border: none !important;
+ padding: 0;
+ margin: 0;
+ background: none;
+ cursor: default;
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+.tab-close-button:hover {
+ -moz-image-region: rect(0, 32px, 16px, 16px);
+}
+
+.tab-close-button:hover:active {
+ -moz-image-region: rect(0, 48px, 16px, 32px);
+}
+
+@media (min-resolution: 2dppx) {
+ .tab-close-button {
+ list-style-image: url("chrome://global/skin/icons/close@2x.png");
+ -moz-image-region: rect(0, 32px, 32px, 0);
+ }
+
+ .tab-close-button:hover {
+ -moz-image-region: rect(0, 64px, 32px, 32px);
+ }
+
+ .tab-close-button:hover:active {
+ -moz-image-region: rect(0, 96px, 32px, 64px);
+ }
+
+ .tab-close-button > .toolbarbutton-icon {
+ width: 16px;
+ }
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up,
+.tabbrowser-arrowscrollbox > .scrollbutton-down {
+ -moz-image-region: rect(0, 13px, 20px, 0);
+ margin: 0;
+ padding: 0 4px;
+ border: none;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up {
+ -moz-border-end: 2px solid transparent;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down {
+ -moz-border-start: 2px solid transparent;
+ -moz-transition: 1s background-color ease-out;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down[notifybgtab] {
+ background-color: Highlight;
+ -moz-transition: none;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(ltr),
+.tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(rtl) {
+ list-style-image: url("chrome://instantbird/skin/tabbrowser/tab-arrow-left.png");
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(ltr),
+.tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(rtl) {
+ list-style-image: url("chrome://instantbird/skin/tabbrowser/tab-arrow-right.png");
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:hover,
+.tabbrowser-arrowscrollbox > .scrollbutton-down:hover {
+ -moz-image-region: rect(0, 26px, 20px, 13px);
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:hover:active,
+.tabbrowser-arrowscrollbox > .scrollbutton-down:hover:active {
+ -moz-image-region: rect(0, 39px, 20px, 26px);
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up[disabled],
+.tabbrowser-arrowscrollbox > .scrollbutton-down[disabled] {
+ -moz-image-region: rect(0, 13px, 20px, 0px) !important;
+ opacity: 0.5;
+}
+
+@media (min-resolution: 2dppx) {
+ .tabbrowser-arrowscrollbox > .scrollbutton-up,
+ .tabbrowser-arrowscrollbox > .scrollbutton-down {
+ -moz-image-region: rect(0, 26px, 40px, 0);
+ }
+
+ .tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(ltr),
+ .tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(rtl) {
+ list-style-image: url("chrome://instantbird/skin/tabbrowser/tab-arrow-left@2x.png");
+ }
+
+ .tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(ltr),
+ .tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(rtl) {
+ list-style-image: url("chrome://instantbird/skin/tabbrowser/tab-arrow-right@2x.png");
+ }
+
+ .tabbrowser-arrowscrollbox > .scrollbutton-up:hover,
+ .tabbrowser-arrowscrollbox > .scrollbutton-down:hover {
+ -moz-image-region: rect(0, 52px, 40px, 26px);
+ }
+
+ .tabbrowser-arrowscrollbox > .scrollbutton-up:hover:active,
+ .tabbrowser-arrowscrollbox > .scrollbutton-down:hover:active {
+ -moz-image-region: rect(0, 78px, 40px, 52px);
+ }
+
+ .tabbrowser-arrowscrollbox > .scrollbutton-up[disabled] > .toolbarbutton-icon,
+ .tabbrowser-arrowscrollbox > .scrollbutton-down[disabled] > .toolbarbutton-icon {
+ -moz-image-region: rect(0, 26px, 40px, 0) !important;
+ }
+
+ .tabbrowser-arrowscrollbox > .scrollbutton-up > .toolbarbutton-icon,
+ .tabbrowser-arrowscrollbox > .scrollbutton-down > .toolbarbutton-icon {
+ width: 13px;
+ }
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):-moz-locale-dir(ltr),
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):-moz-locale-dir(rtl) {
+ border-width: 0 2px 0 0;
+ border-style: solid;
+ border-image: url("chrome://instantbird/skin/tabbrowser/tab-overflow-border.png") 0 2 0 2 fill;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):-moz-locale-dir(ltr),
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):-moz-locale-dir(rtl) {
+ border-width: 0 0 0 2px;
+ border-style: solid;
+ border-image: url("chrome://instantbird/skin/tabbrowser/tab-overflow-border.png") 0 2 0 2 fill;
+}
+
+/**
+ * Tabstrip toolbar buttons
+ */
+
+.tabs-alltabs-button,
+.tabs-alltabs-button > .toolbarbutton-menubutton-button,
+.tabs-alltabs-button > .toolbarbutton-menubutton-dropmarker {
+ margin: 0;
+ padding: 0 1px;
+ border: none;
+ border-radius: 0;
+ /* !important flags needed because of bug 561154: */
+ background: none !important;
+ box-shadow: none !important;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):hover,
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):hover,
+.tabs-alltabs-button:not([disabled]):not([open]):hover,
+.tabs-alltabs-button > .toolbarbutton-menubutton-button:not([disabled]):hover,
+.tabs-alltabs-button:not([disabled]):not([buttonover]):hover > .toolbarbutton-menubutton-dropmarker,
+.tabs-container > .tabs-newtab-button:hover {
+ background-image: -moz-linear-gradient(transparent, rgba(0,0,0,.15)) !important;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):hover:active,
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):hover:active,
+.tabs-alltabs-button:not([disabled]):hover:active,
+.tabs-alltabs-button[open],
+.tabs-alltabs-button > .toolbarbutton-menubutton-button:not([disabled]):hover:active,
+.tabs-alltabs-button[open]:not([disabled]):hover > .toolbarbutton-menubutton-dropmarker,
+.tabs-container > .tabs-newtab-button:active {
+ background-image: -moz-linear-gradient(transparent, rgba(0,0,0,.3)) !important;
+}
+
+.tabs-container > .tabs-newtab-button {
+ padding: 2px 0;
+}
+
+.tabs-newtab-button {
+ list-style-image: url(chrome://instantbird/skin/tabbrowser/newtab.png);
+ -moz-image-region: rect(0, 18px, 20px, 0);
+}
+
+.tabs-newtab-button:hover {
+ -moz-image-region: rect(0, 36px, 20px, 18px);
+}
+
+.tabs-newtab-button:hover:active {
+ -moz-image-region: rect(0, 54px, 20px, 36px);
+}
+
+@media (min-resolution: 2dppx) {
+ .tabs-newtab-button {
+ list-style-image: url(chrome://instantbird/skin/tabbrowser/newtab@2x.png);
+ -moz-image-region: rect(0, 36px, 40px, 0);
+ }
+
+ .tabs-newtab-button:hover {
+ -moz-image-region: rect(0, 72px, 40px, 36px);
+ }
+
+ .tabs-newtab-button:hover:active {
+ -moz-image-region: rect(0, 108px, 40px, 72px);
+ }
+
+ .tabs-newtab-button > .toolbarbutton-icon {
+ width: 40px;
+ }
+}
+
+.tabs-alltabs-button {
+ min-width: 28px;
+ list-style-image: url(chrome://instantbird/skin/tabbrowser/alltabs-box-bkgnd-icon.png);
+ -moz-image-region: rect(0, 17px, 20px, 0);
+}
+
+.tabs-alltabs-button:not([disabled="true"]):hover {
+ -moz-image-region: rect(0, 34px, 20px, 17px);
+}
+
+.tabs-alltabs-button[type="menu"][open="true"]:not([disabled="true"]),
+.tabs-alltabs-button:not([disabled="true"]):hover:active {
+ -moz-image-region: rect(0, 51px, 20px, 34px);
+}
+
+@media (min-resolution: 2dppx) {
+ .tabs-alltabs-button {
+ list-style-image: url(chrome://instantbird/skin/tabbrowser/alltabs-box-bkgnd-icon@2x.png);
+ -moz-image-region: rect(0, 34px, 40px, 0);
+ }
+
+ .tabs-alltabs-button:not([disabled="true"]):hover {
+ -moz-image-region: rect(0, 68px, 40px, 34px);
+ }
+
+ .tabs-alltabs-button[type="menu"][open="true"]:not([disabled="true"]),
+ .tabs-alltabs-button:not([disabled="true"]):hover:active {
+ -moz-image-region: rect(0, 102px, 40px, 68px);
+ }
+ .tabs-alltabs-button > .toolbarbutton-icon {
+ width: 17px;
+ }
+}
+
+.tabs-alltabs-button > .toolbarbutton-menu-dropmarker,
+.tabs-alltabs-button > .toolbarbutton-text {
+ display: none;
+}
+
+.tabs-alltabs-button > .toolbarbutton-icon {
+ -moz-margin-end: 2px;
+}
+
+/* Tabstrip close button */
+.tabs-closebutton {
+ -moz-padding-end: 4px;
+ list-style-image: url("chrome://global/skin/icons/close.png");
+ -moz-image-region: rect(0, 16px, 16px, 0);
+ border: none;
+}
+
+.tabs-closebutton:hover {
+ -moz-image-region: rect(0, 32px, 16px, 16px);
+}
+
+.tabs-closebutton:hover:active {
+ -moz-image-region: rect(0, 48px, 16px, 32px);
+}
+
+@media (min-resolution: 2dppx) {
+ .tabs-closebutton {
+ -moz-padding-end: 8px;
+ list-style-image: url("chrome://global/skin/icons/close@2x.png");
+ -moz-image-region: rect(0, 32px, 32px, 0);
+ }
+
+ .tabs-closebutton:hover {
+ -moz-image-region: rect(0, 64px, 32px, 32px);
+ }
+
+ .tabs-closebutton:hover:active {
+ -moz-image-region: rect(0, 96px, 32px, 64px);
+ }
+}
+
+.alltabs-item[tabIsVisible] {
+ /* box-shadow instead of background-color to work around native styling */
+ box-shadow: inset -5px 0 ThreeDShadow;
+}
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7f5f55ef2b3ccc210bc66fec70c61405024819c0
GIT binary patch
literal 509
zc$@+K0RsMsP)<h;3K|Lk000e1NJLTq000^Q000XJ1^@s6VZfd60000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzpGibPRCwB?Q%y?(Q53y8+Vm_aF(#;p
z5)4WVS`{sFCA0`y=&p6U7WD^;wypXhxog+T7J)4@3zCeAghnT=h2xC#(R;&vG!81H
z7Y_Hn`8bDr?|A{+w&A~VcI6~Lg%2~Yc`#B7;nV>bEPRLnVuV6KK}K#;=oALRH;j-U
zMMfzIh3FE}ux|0L1{LC?3!>0CMF_iM-86AzCU#_Y2&L2M8A8ZMI2;B+5WqA|sMqVD
zs_JYuo2_)~=%HMizbil9h!azEK0&aJHfY~9SdA`ku0&%czP}D3N~RPFg-kA&yO1Oa
zWLbt}GMPyv5{joAn`3t)rXOt2<xj6)*F%#LXf_l$*;~uMH;7)6|Gx8k2sBE1nM$QH
z)oK-3W@ntaH=LzYGWoeij*hn$Zd=M5u*}ZvIgZY9M$p6FVzF4<iO1tzMX0^G<3uz<
zXfXoQOOks2B$LAz1wL_4D*kWuGK1Dj#M4n5_hnIXeM}_#G=HJBb$su1)X#POMEHd?
zFf&r&z5+ikw^{B>JB+>Ex8H}NUbFBTegzl+yP~i4FIHUT00000NkvXXu0mjf#iQ8)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..404f3af1cafe487d668a64e062d9e4c79d1b2882
GIT binary patch
literal 603
zc$@)S0;K(kP)<h;3K|Lk000e1NJLTq001BW000sQ1^@s6I>_8o0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz{YgYYRCwBA{Qv(y!$1PYLE(VAFFv4)
zvj8y{5OYHL-+}lW5dT3|q%0u-rps2JCrf`<s3BM(HUQGB2sMZSs_{M$e<IRjMC)h5
zVF1YGECD{AXFwQg5GM&C3)a7D`NT6Ij88wV5CA(&T27G|$Kup4V_->8KMR&P11S^+
z39_-VBdZmL(*Ll;DOUZQ{K5qFv*3s`ND5_SMCO8ABZVVQvFc~#<Rqw{1v$>VT%FEv
z^YDTNxOsUQBxK~k?1Z?OGhaV{2D86@`OL6w_dXM-o=@m;&MPJj7T^_^VvsYo2D7i6
zJ$mNz%V%Kr=T}b|+#>Vg`cYiW$;HLMFDL|NvvF`Rz={Yiprcq=SRvu}?=Q}X=a-ac
z5L43yvpM($7}$CEAz`nm&cH1s4oL{iELhV3C{F(D+q)+nSu!FzZYGFcv2+oN`1>zE
z{y_CGAnWfd%|}r;{q$|H{sIRhBylH(m8T!V^}`$hN)Y#f2ERZ`MC_kFet=nc7D)XB
z;<spthyhtY&|nn(UtYfiORhZ4hEqRsLGcN#ppg3c1KAF+=I1y<AFKYqzkd<bkE<L2
zxsu__=T8`7L;|qdkIx@LouZ6WKQ0G=<MiaoQ|UP3oDcx(Z_h|bheW|coceJ&069%C
pV2N`=069(I)z3KM+XDar1^{xD&@(t_kg5Ox002ovPDHLkV1h__2C)DD
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0ef2b1ae61e2d4396ac70fab94dab6a7b49ef1aa
GIT binary patch
literal 460
zc%17D@N?(olHy`uVBq!ia0vp^azHG|!3-q-?s(%0q*es@gn;Nf&)*Y?UVixc;{6vj
z4NbNBS!zvl)LQ0g8(ZjG*t*Z(9vB{DYGr5Izua=-3ad#gZJgblJbnB^A_C@b4vL5g
zn!h<@`QFflTO$)vVw2KilhYH@vy!s%Iop<T3yBMKt`O{7CnPN=CZ{MibC1Nt4RUJQ
zDhm$im{{qX+Zb5c8(G;cc78Vx=vJ+gAirP+Miw@9E>SUY2}xNkZDTjz8DOw<>2fgG
zi~uvk13v?Gt@Lzp4ABT)d-1r?Aq4@p1Sglv3IZl&y&I?BIQ@J7Obf{f8-utzx3}AG
z-pt@sufZ?eWUKzSLCyC~%83?_j-xui7v1=-$$0ASfn^qcl?{q(xqMrg)%=X*e$HFA
z#>?4d#SXp7I|fspTLx7Ad9_i(uRkw#!K`E9{c~E=EaGEswPj83$e(9vyxMionk8v>
zZ``vk5S}UzWJUOEY>ePh{I@4**0v4J`}ZA*%nv-p{r#BF&r3i@GkCiCxvX<aXaWEg
CQq4;M
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..77f2462e5bfda652074261e2e160fcbc99c3e04e
GIT binary patch
literal 193
zc%17D@N?(olHy`uVBq!ia0vp^EI=&7!3HGVO5{3#lw^r(L`iUdT1k0gQ7VIDN`6wR
zf@f}GdTLN=VoGJ<$y6JlqGV4O$B>F!Z!R9>YB1nozHp6KvcvDF|A*Uu>OUwQn$h{}
z$=ThF7d}ety>eFPY83Oboz;bBSTAt-9pdt6Qcg<SvR&Oe(M8=+f#-#eM&SL;5AGdo
qovUE_?G%4}<IMt%<e&RkBp4jK#SYh8RpkX*$KdJe=d#Wzp$P!<tVhZK
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fb0fc676f11c54d4b5af1e284e72a8e8b5b3f684
GIT binary patch
literal 238
zc%17D@N?(olHy`uVBq!ia0vp^Ahrw#8<33Ht7i?QBuiW)N`mv#O3D+9QW+dm@{>{(
zJaZG%Q-e|yQz{EjrrH1%P4IMa45_%4BqBIHDJda=Au&zEjjev+4|(nh39Lz?3SkUM
zb|$U!8-6ef+-ID*Bs)2G>Hgf$Zs)G+&$DwsreHWh#)Fsn!mA0(&(Ev;`~QEuM90jA
z8H`<yIf)>d6E0<%o}LpvzIVuT+$46Sj(uu!dK1?_#z+5oW<0PD;d>M9#&)QoFy!Hi
hLxHU(K^y`J3|Ft%GfduRr3G{wgQu&X%Q~loCIBBuRU!ZY
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c67c2337d2816edea7288e16719b0191be6a900a
GIT binary patch
literal 3117
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
Hu0mjfYMRIW
new file mode 100644
--- /dev/null
+++ b/im/themes/tabbrowser-winstripe/tabbrowser-aero.css
@@ -0,0 +1,95 @@
+% This Source Code Form is subject to the terms of the Mozilla Public
+% License, v. 2.0. If a copy of the MPL was not distributed with this
+% file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+%define WINSTRIPE_AERO
+%include tabbrowser.css
+%undef WINSTRIPE_AERO
+
+%define customToolbarColor hsl(214,44%,87%)
+%define glassActiveBorderColor rgb(37, 44, 51)
+%define glassInactiveBorderColor rgb(102, 102, 102)
+
+@media all and (-moz-windows-default-theme) {
+ .tabbrowser-strip:not(:-moz-lwtheme) {
+ background-color: @customToolbarColor@;
+ }
+
+ .tabbrowser-tab:not(:-moz-lwtheme),
+ .tabs-newtab-button:not(:-moz-lwtheme) {
+ background-image: @toolbarShadowOnTab@, @bgTabTexture@,
+ -moz-linear-gradient(@customToolbarColor@, @customToolbarColor@);
+ }
+
+ .tabbrowser-tab:not(:-moz-lwtheme):hover,
+ .tabs-newtab-button:not(:-moz-lwtheme):hover {
+ background-image: @toolbarShadowOnTab@, @bgTabTextureHover@,
+ -moz-linear-gradient(@customToolbarColor@, @customToolbarColor@);
+ }
+
+ .tabbrowser-tab[selected="true"]:not(:-moz-lwtheme) {
+ background-image: -moz-linear-gradient(white, @toolbarHighlight@ 50%),
+ -moz-linear-gradient(@customToolbarColor@, @customToolbarColor@);
+ }
+}
+
+@media all and (-moz-windows-compositor) {
+ #convWindow {
+ -moz-appearance: -moz-win-borderless-glass;
+ background: transparent;
+ }
+
+ .tabbrowser-strip:not(:-moz-lwtheme) {
+ background-color: transparent !important;
+ color: black;
+ text-shadow: 0 0 .5em white, 0 0 .5em white, 0 1px 0 rgba(255,255,255,.4);
+ border-left-style: none !important;
+ border-right-style: none !important;
+ }
+
+ .tabbrowser-strip:-moz-lwtheme {
+ border-color: transparent !important;
+ }
+
+ /* Toolbar shadow behind tabs */
+ .tabbrowser-strip:not(:-moz-lwtheme) {
+ border-top: 1px solid @toolbarShadowColor@;
+ border-top-left-radius: 3.5px;
+ border-top-right-radius: 3.5px;
+ background-clip: padding-box;
+ margin-bottom: -1px;
+ background-image: none !important;
+ }
+
+ .tabbrowser-tabs > .tabbrowser-arrowscrollbox > .arrowscrollbox-scrollbox > .scrollbox-innerbox:not(:-moz-lwtheme) {
+ position: relative;
+ }
+
+ .tabbrowser-strip {
+ padding-left: 4px;
+ padding-right: 4px;
+ }
+
+ /* Make the window draggable by glassed toolbars (bug 555081) */
+ .tabbrowser-strip {
+ -moz-binding: url("chrome://global/content/bindings/toolbar.xml#toolbar-drag");
+ }
+
+ .tabbrowser-tab:not(:-moz-lwtheme) {
+ text-shadow: none;
+ }
+}
+
+@media not all and (-moz-windows-compositor) {
+ #convWindow:-moz-system-metric(windows-default-theme) {
+ background-color: rgb(185,209,234);
+ }
+ #convWindow:-moz-system-metric(windows-default-theme):-moz-window-inactive {
+ background-color: rgb(215,228,242);
+ }
+
+ .tabbrowser-strip:not(:-moz-lwtheme):-moz-system-metric(windows-default-theme) {
+ -moz-binding: url("chrome://global/content/bindings/toolbar.xml#toolbar-drag");
+ background-color: transparent;
+ }
+}
new file mode 100644
--- /dev/null
+++ b/im/themes/tabbrowser-winstripe/tabbrowser.css
@@ -0,0 +1,338 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+@import url("chrome://global/skin/");
+
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+@namespace html url("http://www.w3.org/1999/xhtml");
+
+%filter substitution
+%define toolbarHighlight rgba(255,255,255,.5)
+%define selectedTabHighlight rgba(255,255,255,.7)
+%define toolbarShadowColor rgba(10%,10%,10%,.4)
+%define toolbarShadowOnTab -moz-linear-gradient(bottom, rgba(10%,10%,10%,.4) 1px, transparent 1px)
+%define bgTabTexture -moz-linear-gradient(transparent, hsla(0,0%,45%,.1) 1px, hsla(0,0%,32%,.2) 80%, hsla(0,0%,0%,.2))
+%define bgTabTextureHover -moz-linear-gradient(hsla(0,0%,100%,.3) 1px, hsla(0,0%,75%,.2) 80%, hsla(0,0%,60%,.2))
+
+.tabbrowser-strip {
+ background-image: -moz-linear-gradient(@toolbarHighlight@, rgba(255,255,255,0));
+}
+
+/* ::::: primary toolbar buttons ::::: */
+
+toolbarbutton {
+ -moz-box-orient: vertical;
+}
+
+toolbarbutton > .toolbarbutton-menubutton-button > .toolbarbutton-icon,
+toolbarbutton > .toolbarbutton-icon {
+ -moz-margin-end: 0;
+}
+
+.tabs-container > toolbarbutton,
+.tabs-container > toolbarbutton > .toolbarbutton-menubutton-button,
+.tabbrowser-arrowscrollbox > .scrollbutton-up,
+.tabbrowser-arrowscrollbox > .scrollbutton-down {
+ -moz-appearance: none;
+ border-style: none;
+ padding: 0 3px;
+}
+
+.tabs-container > toolbarbutton:not([disabled]):hover,
+.tabs-container > toolbarbutton[open],
+.tabs-container > toolbarbutton > .toolbarbutton-menubutton-button:not([disabled]):hover,
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):hover,
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):hover {
+ background-image: -moz-linear-gradient(rgba(255,255,255,0), rgba(255,255,255,.5)),
+ -moz-linear-gradient(transparent, rgba(0,0,0,.25) 30%),
+ -moz-linear-gradient(transparent, rgba(0,0,0,.25) 30%);
+ background-position: 1px -1px, 0 -1px, 100% -1px;
+ background-size: -moz-calc(100% - 2px) 100%, 1px 100%, 1px 100%;
+ background-repeat: no-repeat;
+}
+
+/* Tabstrip */
+
+.tabbrowser-strip {
+ min-height: 0;
+ padding: 0;
+}
+
+.tabbrowser-strip:not(:-moz-lwtheme) {
+ background-image:
+ -moz-linear-gradient(bottom, @toolbarShadowColor@ 1px, rgba(0,0,0,.05) 1px, transparent 50%);
+}
+
+%ifndef WINSTRIPE_AERO
+@media all and (-moz-windows-default-theme) {
+ .tabbrowser-strip {
+ padding-left: 2px;
+ padding-right: 2px;
+ }
+}
+%endif
+
+.tabbrowser-tab,
+.tabbrowser-arrowscrollbox > .tabs-newtab-button {
+ -moz-appearance: none;
+ background: @toolbarShadowOnTab@, @bgTabTexture@,
+ -moz-linear-gradient(-moz-dialog, -moz-dialog);
+ background-origin: border-box;
+ background-position: 1px 2px;
+ background-size: -moz-calc(100% - 2px) -moz-calc(100% - 2px);
+ background-repeat: no-repeat;
+ margin: 0;
+ padding: 0;
+ border-width: 6px 3px 4px;
+ border-style: solid;
+ border-image: url(tabbrowser/tab.png) 6 3 4 fill repeat stretch;
+ border-radius: 7px 7px 0 0;
+}
+
+.tabbrowser-tab:hover,
+.tabs-newtab-button:hover {
+ background-image: @toolbarShadowOnTab@, @bgTabTextureHover@,
+ -moz-linear-gradient(-moz-dialog, -moz-dialog);
+}
+
+%ifndef WINSTRIPE_AERO
+@media all and (-moz-windows-theme: luna-blue) {
+ .tabbrowser-tab,
+ .tabs-newtab-button {
+ background-image: @toolbarShadowOnTab@,
+ -moz-linear-gradient(hsla(51,34%,89%,.9), hsla(51,15%,79%,.9) 1px, hsla(51,9%,68%,.9));
+ }
+
+ .tabbrowser-tab:hover,
+ .tabs-newtab-button:hover {
+ background-image: @toolbarShadowOnTab@,
+ -moz-linear-gradient(hsla(51,34%,100%,.9), hsla(51,15%,94%,.9) 1px, hsla(51,9%,83%,.9));
+ }
+}
+%endif
+
+.tabbrowser-tab[selected="true"] {
+ background-image: -moz-linear-gradient(@selectedTabHighlight@, @toolbarHighlight@ 50%),
+ -moz-linear-gradient(-moz-dialog, -moz-dialog);
+}
+
+.tabbrowser-tab:-moz-lwtheme {
+ color: inherit;
+}
+
+.tabbrowser-tab[selected="true"]:-moz-lwtheme {
+ background-image: -moz-linear-gradient(@selectedTabHighlight@, @toolbarHighlight@ 50%);
+}
+
+.tabbrowser-tab:-moz-lwtheme-brighttext:not([selected="true"]),
+.tabs-newtab-button:-moz-lwtheme-brighttext {
+ background-image: -moz-linear-gradient(hsla(0,0%,40%,.6), hsla(0,0%,30%,.6) 80%);
+}
+
+.tabbrowser-tab:-moz-lwtheme-brighttext:not([selected="true"]):hover,
+.tabs-newtab-button:-moz-lwtheme-brighttext:hover {
+ background-image: -moz-linear-gradient(hsla(0,0%,60%,.6), hsla(0,0%,45%,.6) 80%);
+}
+
+.tabbrowser-tab:-moz-lwtheme-darktext:not([selected="true"]),
+.tabs-newtab-button:-moz-lwtheme-darktext {
+ background-image: -moz-linear-gradient(hsla(0,0%,60%,.5), hsla(0,0%,45%,.5) 80%);
+}
+
+.tabbrowser-tab:-moz-lwtheme-darktext:not([selected="true"]):hover,
+.tabs-newtab-button:-moz-lwtheme-darktext:hover {
+ background-image: -moz-linear-gradient(hsla(0,0%,80%,.5), hsla(0,0%,60%,.5) 80%);
+}
+
+.tab-icon-image {
+ width: 16px;
+ height: 16px;
+ -moz-margin-start: 2px;
+ -moz-margin-end: 3px;
+}
+
+/* tabbrowser-tab focus ring */
+.tabbrowser-tab:focus > .tab-stack {
+ outline: 1px dotted;
+}
+
+/* Tab DnD indicator */
+.tab-drop-indicator-bar {
+ height: 11px;
+ margin-top: -11px;
+ position: relative;
+ /* set -moz-margin-start to -1/2 indicator width: */
+ -moz-margin-start: -5px;
+ -moz-margin-end: -8px;
+}
+
+.tab-drop-indicator {
+ margin-top: 37px;
+ height: 11px;
+ width: 11px;
+ margin-bottom: -37px;
+ position: relative;
+ background: url('chrome://instantbird/skin/tabbrowser/tabDragIndicator.png') 50% 50% no-repeat;
+}
+
+/* Tab close button */
+.tab-close-button {
+ -moz-appearance: none;
+ -moz-image-region: rect(0, 64px, 16px, 48px);
+ border: none;
+ padding: 0px;
+ list-style-image: url("chrome://global/skin/icons/close.png");
+}
+
+.tab-close-button:-moz-system-metric(touch-enabled) {
+ -moz-transform: scale(1.2);
+}
+
+.tab-close-button:hover,
+.tab-close-button:hover[selected="true"] {
+ -moz-image-region: rect(0, 32px, 16px, 16px);
+}
+
+.tab-close-button:hover:active,
+.tab-close-button:hover:active[selected="true"] {
+ -moz-image-region: rect(0, 48px, 16px, 32px);
+}
+
+.tab-close-button[selected="true"] {
+ -moz-image-region: rect(0, 16px, 16px, 0);
+}
+
+.tab-close-button:focus {
+ outline: none !important;
+}
+
+/* Tab scrollbox arrow, tabstrip new tab and all-tabs buttons */
+
+@media all and (-moz-touch-enabled) {
+ .tabbrowser-arrowscrollbox > .scrollbutton-up,
+ .tabbrowser-arrowscrollbox > .scrollbutton-down,
+ .tabbrowser-strip .toolbarbutton-1 {
+ min-width: 8.1mozmm;
+ }
+
+ .tabs-newtab-button {
+ min-width: 10mozmm;
+ }
+
+ .tab-content {
+ min-height: -moz-calc(6.8mozmm - 7px); /* subtract borders from the desired height */
+ }
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up,
+.tabbrowser-arrowscrollbox > .scrollbutton-down {
+ list-style-image: url("chrome://instantbird/skin/tabbrowser/tab-arrow-left.png");
+ -moz-image-region: rect(0, 15px, 17px, 0);
+ margin: 0;
+ padding-right: 2px;
+ border-right: 2px solid transparent;
+ background-origin: border-box;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up[disabled],
+.tabbrowser-arrowscrollbox > .scrollbutton-down[disabled] {
+ opacity: .4;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]):hover:active,
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]):hover:active {
+ -moz-image-region: rect(0, 30px, 17px, 15px);
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:-moz-locale-dir(rtl),
+.tabbrowser-arrowscrollbox > .scrollbutton-down:-moz-locale-dir(ltr) {
+ -moz-transform: scaleX(-1);
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down {
+ -moz-transition: 1s background-color ease-out;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-down[notifybgtab] {
+ background-color: Highlight;
+ -moz-transition: none;
+}
+
+.tabbrowser-arrowscrollbox > .scrollbutton-up:not([disabled]),
+.tabbrowser-arrowscrollbox > .scrollbutton-down:not([disabled]) {
+ border-width: 0 2px 0 0;
+ border-style: solid;
+ border-image: url("chrome://instantbird/skin/tabbrowser/tab-overflow-border.png") 0 2 0 2 fill;
+}
+
+.tabs-newtab-button > .toolbarbutton-icon {
+ margin-top: -1px;
+ margin-bottom: -1px;
+}
+
+.tabs-newtab-button {
+ list-style-image: url(chrome://instantbird/skin/tabbrowser/newtab.png);
+ -moz-image-region: rect(0, 16px, 18px, 0);
+}
+
+.tabs-newtab-button {
+ width: 30px;
+}
+
+.tabs-newtab-button:hover:active {
+ -moz-image-region: rect(0, 32px, 18px, 16px);
+}
+
+.tabs-alltabs-button {
+ list-style-image: url("chrome://instantbird/skin/tabbrowser/mainwindow-dropdown-arrow.png");
+ -moz-image-region: rect(0, 13px, 11px, 0);
+}
+
+.tabs-alltabs-button > .toolbarbutton-icon {
+ margin: 3px 0;
+}
+
+.tabs-alltabs-button > .toolbarbutton-text,
+.tabs-alltabs-button > .toolbarbutton-menu-dropmarker {
+ display: none;
+}
+
+.tabs-alltabs-button:hover:active,
+.tabs-alltabs-button[open="true"] {
+ -moz-image-region: rect(0, 26px, 11px, 13px);
+}
+
+/* All tabs menupopup */
+.alltabs-item[selected="true"] {
+ font-weight: bold;
+}
+
+.alltabs-item[tabIsVisible] {
+ /* box-shadow instead of background-color to work around native styling */
+ box-shadow: inset -5px 0 ThreeDShadow;
+}
+
+/* Tabstrip close button */
+.tabs-closebutton {
+ -moz-appearance: none;
+ list-style-image: url("chrome://global/skin/icons/close.png");
+ -moz-image-region: rect(0, 16px, 16px, 0);
+ padding: 4px 2px;
+ margin: 0px;
+ border: none;
+}
+
+.tabs-closebutton > .toolbarbutton-icon {
+ -moz-margin-end: 0px !important;
+ -moz-padding-end: 2px !important;
+ -moz-padding-start: 2px !important;
+}
+
+.tabs-closebutton:hover {
+ -moz-image-region: rect(0, 32px, 16px, 16px);
+}
+
+.tabs-closebutton:hover:active {
+ -moz-image-region: rect(0, 48px, 16px, 32px);
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..da906245de7889f992f374c14b64c452606d58c3
GIT binary patch
literal 676
zc%17D@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G}
zXKrG8YEWuoN@d~6R2v2cMy~*$5ZC|z|1;nKVPT;*HrBIe&73lMQdf6pcXwxXV^eig
zQ(aSYLvw3GOG{I0YioO3YkPZp2M~3vS-mR1v^=l0Z0?*{vu4hiyJXqiCCk@r*}7)y
zwsqUKt>3n7(~ccG4j$fd=<v=%M|K|pqN96u@7#Ovz`mo$4xTu1`1IMMCr=(bdgS=I
zbH~q}KY8Z#$xD|{U$}7Q+Kn^UZ=Ahy?cBBN7jECZaOdu&n>R0Cy?W)^wJZ1TUA+dR
zFJHTU_1f***Kgjq{_xTDhmUVOcyRO4<6F0H-G2P^_LC=f@7}rl=+WILPwzi^bpP42
zhfkh7dj9;$ix*FyJ$(iQFJC-={`|#@XRqG8diCb@>v!+o1JV0;A3lBf@af~Hj~_pM
z`uO?Nr_WzLfBy32%U2-!`t{3aApZId2)}*<lHb35|Nd>A($8dIsL7QC`2{mDaq!3~
zsB4&51U9tw_4UKS%(?ScuKDn2X(>?UF;5rA5Q*^Q2iJ@Y3@$uMOiF2BTKi_njFuAl
zxU?A^j+1nz`&6_ox9~ZlFs-}yvZDG;S01gT2^xnrB`3|4%2#I+ym+dkfXCO*d*fGg
z5vJ}BKT@79JLZ}_dsV~>jwY8GKjtVcKGZZfv}cNs2}^@g&l#a(jRzeW%}!NuJuA}j
z;c*ZQti8`*pYQFe9jaND#x|j&W8LoQ?X#!uGGX^%^>B$ee(!3O@2qCgS7L5yj=sh!
ub{;M9aa^7JLWzm#j*pmKXUtGkWMFuDN!C5KrCth@WISE{T-G@yGywqE*KAz?
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..27176cc6d5643ac40d6a0b6b4ee77b847f8d0096
GIT binary patch
literal 877
zc$@)k1CsoSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10_sUbK~y-6eUn{CQ(+v&pZ7f<o^$4AbM9nLw^asNWZ#7skrE+J
zqMHaWqKmu;f-Z#Jhu1<x7e*RIm?cRT;w(@pKO(7aB2qfDY;%HzZf9rCvpIL(F8UzJ
zdf>VI|9E&F{)91xP$=Xi1Z{*Mz!-B-N@gs}x)unWx(k5eKO%j7eJ)87rrfGp<n?(A
zILaZHTSGJ&HRDT*(~Qx&hK2^?UjQn};th4P>Qron;_X|vvz?utxv8lS+3l6vWS@U)
zHDFEj_xIcX31AjGvAMKV7#tW_U07JS{_X4HK~4LZk1s8u#O>mJe*aFMr(?any@eYB
z0Fc$(DtMlwk|YkqVzH?LQA{X`4a?~i+-iy7DfjH=csknE)n)q&Kqz@_B$KRqe>JPD
z+%Xsk)X!E`?RGgF4w&W&%*+bPJY_<Kw|tKvkQW^t9m={AL!r<<LfOj-zekZJ83m#O
zm(zt*+CX?lgD46p+v0&Jh|t2}Y*^FYCE`YHOG}Fh09<!>_k#9OlTt?Nklj%zQbM2`
z2_*D5RMib#*I}9_3hj2dRh7?VG9{^HqkepB;(kp{%^G3s$IN|C9$x1;{=&{(RW?Eh
z=I3K@I-MwXx-d5vg(S-;FZY6@9404UWj=lW^fs}WJoy^{06jhT+Ic}dzwf|a8zB^P
zu_#K4U2qn=5cx6-MX{m6>jMG7$ncOEn~(L-KMQGUI(I3xY&>}L`c0Zr0-x89r9>S0
zd>&i3SAv0oSqzj?96oYX&gb)I)+P9*n>X9<NQ!*6wystY1OXh!fl>~XP*D2ABO^oE
zNF?%@{&fxD;>AlBlDhtAcz7gjSr!N(>pVL8JQImT-Wz(ldBX(1Ccb*Dt-Gjb)9FBC
zqaq3-D5aQ~7|(=f!qZj`$AZCNdcy=i#Zt+Yb4D^b@a*Z}imvMz8yn5egf(p~YaI^;
zgJ}TxUjhI?YildD7s+jwg=UV@A%jadU%7nc_ji5=rf5AUuY~y!00000NkvXXu0mjf
D8`poA
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a4038bb4fa7c7cba67550edc3e0f05a237c03cb6
GIT binary patch
literal 789
zc$@(h1M2*VP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt007q5
z)K6G40000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!r%6OXRCwBS
zQ*B67VH7_5au~u!5)rFFqRbyNNGD22KZKE85ES&6AwfSXi9Rs;fCwrOBB)<OioiaI
zVBuOz8?(0LvQ~c*_d}aDi;``P-Ff%n=B{gR=e%l2xdYF=?|bh#&w0-C-m8KE89@5d
z0EKivBxZ`>Ir{=uBaes>7-M-T8{IE!pih)9Kby%E3I(=~<>h4-2n1#^qX|)oB(NFO
z@VjvQreM^4RZLa34+^ZTtN;=K5`fuk-s|)Eo+E)-rBYRHuHf(u2X%ZE%rfELY!2FP
zFF0SnNoBKHwz#;+(&;qwdcAYylmHy)drJhFOor81gdu3R4VfA`KIQXymP{s@BuOll
zO0n_r@z7=@YRLZLLTK|~@Vphiy))dscB-~mEb?bGilQiBu~_!G-R{T#kF)F0BQi{u
zWk#~8GpV7@kw}Eu?RFLlg;+cu=Oc}cjZJS<qK2i!XV1h(MXS|v1CfAtER{--%jKZH
zz8-?XAmBLM+~(%yI+x2eysktI$&jz(($l#K(JyN>n!mFV$>iiD7m23<Q&Urb3OGqi
zOG}-{<FVnZYBgTIgWlj3E<OqR{r)&9A%cpE3f`RxX}`WERcoO|Xox_8#Iyr;w?cdG
zxnWThV>+FV7a5I4-knC!>-Ess*a!xL0WfFYYPDX)TA7$Mh@Buj9E79y?YKVUbUGt+
zgt1tRBODHMLlcPvb2uDf%;`XEL!f{GPO=sD9BG1M@BOg9rw8{ZG4UsnM5EEN#j79E
zD!~?n33|OY=yqMl^+Cjmk&%%fR9LQ<pyhU4NVK94wNP2z29nsn_7^6*y1Jy%(a~F!
z(%IR01#ba_goUMzP9mRnJ5=p3L0&oy^KKDUDR9R~1}_PM(7Tqq@NY529{~mcbqUj#
T^G%&`00000NkvXXu0mjf=$L0;
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..673814bb5c3ce861368b9bfce05176ee9c3144be
GIT binary patch
literal 1593
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
Jd~WU$@jrSI`||(*
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4c876b92b0faf34c5a01102ca80789a1f169e8da
GIT binary patch
literal 517
zc%17D@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G}
zXKrG8YEWuoN@d~6R2!h8O94J1uK)l4PX~huEB8-WwSVerAUZH>-TqnY4lLNXf8oac
z%eNd@xBbAn9S64V-oJJCf$e(^?Am)^&%OgdaOlJtAXt0l+qx^?w%+)*?Z&tLcfRkx
z`|Z@j@24MryZRi6zCU>L{lVMsPv3oi`u_XNkKbN>{QmCq_fKEGfBE+P>$mSfu=UQr
zo%jCjy7zD2ga7*<{M!#CAO1V?=--jYK=l9Qvwx?a{yX*T-}x6n^#AJXe^+1szxDRt
zt#|)#zx)5-!@ma~{y+Ti@7ZS{`v2zZ|2N<Moo#-j1@xVENswPKgG0j>bg+N_7i^$w
z+MEwSZIe7*9780+V^5vsYcddUyC~_=6T+f$WUkt~FMsEs^0<EC+<Z-^#rMuWv6gJu
zFCcK)G<spnBfA@0r%zyPUoQUKBF!M**iLN`ub$QR<;&*I41Xb8X1;M&hd9H^cXKyo
z`38z{*qAQLdSwy8)FITTb|~g$3TK0cOv_of|34WLl$Kjn-DOaD^>1n!U-@&Pht@iE
b<?ncJC<RZOqZ=FwbRC1ItDnm{r-UW|0#Y-#
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f0f321f806a3e99d9683a42a76da0177dcd953c4
GIT binary patch
literal 679
zc$@*J0$BZtP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000A0000A00T2KrN&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10whU9K~!jg?U>7M6G0F~&vjx!9ylZf#A|~hBo<`D|9?fq3L#*F
z1TqkZrxYhH7Ci=!A22;t_IM=Ul_hsg)#>i)t}dAwZC0o00KD1&G_4Il(`r4y_A)*y
zX$v?44uKvp1bza2GaH2Zin<3Ri4^cX;4ZMWVCV(#+RVO%_>BONv<<ufb}O1(124_&
z-0Rz&1I5fgr+V;^R_9dGf!BXT67K@HYx;g#Oh9c#0PHwy_enWZTTKH%-qxE@1i%fa
zy(@+Y0PkJWcn-84;Fi;V-(wsBu;|9Es;<X40^o<!e&jJ;2Y_E5;|Kt6QTEYe90BkF
z_*&EU+{`|CoVx)mm9uYan!oY-k9v_^ke`fKz<00X5CAh90lBsPzycm4k#FMMWOVKQ
zu_6I-x5MWMr;z~1nd4n0#8@E!lI{afGR;mU9l3pb@~C(YJ_b%|eqscid0H*C0E)ox
zkY;_auJb|$ya(Qy*;RHdRRM~i5BS^naaECXbP4o<FQg;(x>8*K1CZ1O9sm!4o6aDs
zY6J{OM{VEChKmL+1d!AN9+76d$sVeaj@(yfb~*j$TmVVOq-NDRX-G==QuRACvyygz
zXRC@TLtW;?HE(O2u%xbafc7Mn-ryyG;-sn5CS0XTH~91l^jP27AFI>}oCffA*;b)a
zD{>kj`f^%^{<#9J0GMpaw-KPjM4W8|fQfG42B0BzW_}cE3&5Wh_zl|Ke%m+eE{p&G
N002ovPDHLkV1fki9`yhK
new file mode 100644
--- /dev/null
+++ b/im/themes/viewlog.css
@@ -0,0 +1,91 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+%ifdef XP_MACOSX
+#logTree {
+ -moz-appearance: none;
+ background-color: #d2d8e2;
+ border: 0px;
+ margin: 0 0;
+}
+
+#logTree:-moz-window-inactive {
+ background-color: #e8e8e8;
+}
+
+/* Override the -moz-field background color set by tree.css. */
+treechildren::-moz-tree-row {
+ background-color: transparent;
+}
+
+/* Unfortunately the previous rule also overrides the backgrounds of
+selected rows, so set them again like they are in tree.css. */
+treechildren::-moz-tree-row(selected) {
+ background-color: -moz-mac-secondaryhighlight;
+}
+
+treechildren::-moz-tree-row(selected, focus) {
+ background-color: Highlight;
+}
+
+splitter {
+ -moz-border-end: none !important;
+ -moz-border-start: 1px solid #404040;
+ min-width: 1px;
+ width: 1px;
+}
+
+splitter:-moz-window-inactive {
+ border-color: rgba(0,0,0,0.35);
+}
+%else
+%ifdef XP_WIN
+#logTree {
+ -moz-appearance: none;
+ border: none;
+ margin: 0 0;
+}
+%else
+#browser {
+ -moz-appearance: listbox;
+}
+
+#logTree {
+ margin: 0 0;
+}
+%endif
+%endif
+
+#corruptLogScreen {
+ background-color: -moz-Dialog;
+ overflow: auto;
+}
+
+#corruptLogBox {
+ background-color: -moz-Field;
+ color: -moz-FieldText;
+ border: 1px solid ThreeDShadow;
+ border-radius: 10px;
+ padding: 1.1em;
+ -moz-padding-start: 20px;
+ margin-left: 1em;
+ margin-right: 1em;
+}
+
+#corruptLogImage {
+%ifdef XP_MACOSX
+ list-style-image: url("chrome://global/skin/icons/error-large.png");
+%else
+ list-style-image: url("chrome://global/skin/icons/error-48.png");
+%endif
+ -moz-margin-end: 1em;
+}
+
+#corruptLogInnerBox {
+ max-width: 25em;
+}
+
+#corruptLogDesc {
+ font-size: large;
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..43cc90eea0bff35daf698119be6da11c61a546f6
GIT binary patch
literal 733
zc$@*<0wVp1P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0007{Nkl<Zc-n<i
zOGs2<6#o7@cOJg3I--J*q~I>7Xwjlw1ZA&HBF!{vx~VY2aWn}cDxx5UnIwr?n2H&u
z)uyC^TD5DD3)@79;=<@LK5pYU&fK|w-|s{kOm!~@&iT(d-~avRA%Hdj7L2YTz{XZH
z(liU`$cl!I&;AuRP(yXbjQD8_{%EF>fzkQk2qb3BXkcmsz_AG+lLZJ3ZYMys8TCE;
z4Pb<Z4l=ox5q*Ukyz}9fg<K4(&i9waGl((vEM?k^o_HaQE~$KDjOZkqp=(%+g#**M
z7?gDn)>$^3(uT={2&GXNL3x0R-;u(Zv<p|_Ui1{kvBOH?Lo(XBrc(1l18#>4+u{Y7
zDq6q|J&8*h7w*wDEQ}7RZojWd)RWd*;lzw3;V(@hG<T<I{q8O8!&vkn>=YQ4X+BkA
zkFDVqT_+X5dn(6-#5h?uvQB-rj?2=8Vvocl_4ri*pGaXzvv5`DXh$03Qp0ij#uUI3
zl?qBSWx=64kton$NFAR~?L(PjaQ6+qYiU%h*hpGwxScvV0EMjCyaG^$kYYWtD3L-e
z&xP__0Q4>AyHJv_u|mdqbV&v9k;-1m1iNvVjU5pggfc}a-TVYc95K?q#Y8`2CMZYA
z<Fx`9RhLj2*!GvKgK68S_a<=Rk0R#dx+YjS&JsJip8!t@a9Xu7$e5C39&USn;G&}%
z9o9T{>Nchqds|h%;SCNHr!~~-RhZ1op*NY2Yo1k{qbnwiPS#uEISn6?cROA9_^&}q
zr%=b+-|^rf^A53)0gm!;0}VsXL$VS^s;9-wHOlUr{l)IDSf<*>_+^grlk6^ZuWw=_
z4?mfa=E-d0UzVwBa2I21XgoF}fsJj1q7WP@H=|A8{<F@NX4v;7YXd(4ixV8e1YZ*U
P00000NkvXXu0mjf37b>O
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d1a7fdfe7dceb362f832f91e6d17554b78aeea19
GIT binary patch
literal 1719
zc$@*Z21xmdP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11~f@TK~z|U#Z_HQ9M>5=_s;C^EU;@9y!;u5fQ=R$ka46Ky98I2
z<0euPr6oz*D9MwPT1wPPQCsz)wxhPHRP`Z^Teo&m8zqfXsYz%OVml@n>{>}64#w<)
zv18+SVS$A;u*=Tw?9AM+543K;Hmo<bdZqI;-#y>C=YIDLBO?4im;6-;PPMMjf!qD8
znV!EVrH)7S^vnsB(AKhx<})H7qO5VDch3)c4?mom8Sf-by+m4agrcK|L!GbPdFuU_
zu_Y6ZteZ#2x*zN7c!JDym_(wD#QdQJB-+T(LNh1c*wB6Ck0@G+hiB<LA3gU<YxUhP
z0I6djBMLIr1sG8<t<$~fzE-Cx_=_tMWjg~^44Pu)5s((XVS&YxU*S-EvD+n}M3N+!
z+9g1rx^aaV$+bB>uG=Lbm`Y9oh5@>n04i3~@sN4D1WY<}*MB}UeYrAM(E%~L_$$xD
z-0a1)mX39-M3n6iV(rGCedEf-Q|W}d3PdiDkyrpJP!oB^(CJr4ZR1#R2-#Oj!b<}O
zR?mF#*W)%TuX1||B_a~DS3~ntV?FK0jM%yT1xnmj0smQDe_{4y67>M!aNtby)0E0|
zZ`M(K@=$eqPC;#be5yZ~oX1{A6rVKjCIbN8{~ap_uz^cx0OxhGHE*4fOnhs{_qE}r
zJXtx=`R5Y<nwrN?msjnu8>YZ?xHmBq=})B7b4iIY;c{16T%Jms(^cefD1}OVF2n{t
z`SsrB#{zqna%JU!r+D*=USGZ4Or8e=P*_-`6#6O@#$*5l5=oFq0ThKuMxiKW;6i%<
z!2d>opyYPDT?T0jK}Y8Dfyd=JI9x?*Zusq1n_nI4xJPl7<Uk7nMm!^s7RIWA8pnJ4
zSoKoATXtaL(%ZjS?W=;&t^imvKimo?<$*~G7*}8l22D#qi^VAsyKG@HwgEVowSbO4
z<<=LhX=-xX%OKRnwli)=JmsV4<e5Y&8C6qiBxa`7F9cCfJT}@bGjmwYM`$T$#sb>+
zvkLF(4ewP|e@!;yJy?2rGUHH`JK2~zO|j_UkD8y1ypjoTM$horLH1ytw`QNe?%Tzb
z_(%fX<R8O0B&7ipkx6}Q<imeV$X6b3X}MW(1_BPh%xtoqzf`{N{)bCTE4@a%N5VqZ
zEW5aUEmToT!~K8%xbwo5t-E)VxMcxH_p=8Scj<4}-}PXz1EY2`d45S38@SR4Mk$zy
z9xQc*TZ^H>Ps0OkN1MJE`ew!gjvin|4(IB(%I?@&SK!UDo3T@jgt~Z>q=4mY$58P2
zoXl-fW%VW(=1*Ri2i#VMxak)chY$b0>AT_QZY1Ek954*H3w*U3y?LrbpMH~x^aRL=
zT?4=&oJ|Ov{a|V`9Q2QdKl2CrkBn+^1DK^?QLUK>BG+=6=X=-fY(HqJ&&UA)_~+}z
zpVroGYY@>x`0})KOCe0xeK<FCa_r2xsZ9sotcwbV$sXAdmcM?l@or^x^EMayn5iy$
z>X7nV5D4~0?6a3k8+MYutOEcrdv*MY@$m^=Qfj_rX9*1Fb_Dv5j~sl5Z8`96tstB3
zkxY2r?)SN#e`(EkhJ#(l;#5c6Uh&@(aytkzByO`z8pvPq3IO1juWvp-Ju!4v*y;c<
zaC-$b>%AE0|8VG6uX=X$4SQt<;bvf~2;^a4s~Cj)hx<x*1qQm0rz~5*xN`xXM=%&X
zJu^5M+Vu0+Hb+*xg4)_zX0^I4&pdR-zjgE7z2zl&@?6qRLjzr(?rkl3axNuv#vlW*
zU?Ipj00F=NpxbN){bpCJ^RBv$UO_U32797MPRupF)q6+Ss$0_O^sF8T1g<r`&H=yQ
z58Y~Df4l#}bY%GK#8i@kXS+In+FI5U*JPb>2!I3t6AU^dq`{yAFaZ);TGl@f#CKjC
z88HKakEZ_iL8`H>XKh3#BHe1h@Aoh7z%?ft8|CNk@2@WRIiCCRA1Z$$Kr&;H044*(
z0Z8oM`x#@Pg=sYbCIB+_Jayse?$4ZWbO(x~x+xnLk<|P8`mRf{6{DCv`Y5Xz9OTU9
zl9&*j1Cq%YmrTY<B1S|E0D&>Vg%GBYg@w3CS`5?YbedgVU1GT&{{oR2uUE(xp1lA7
N002ovPDHLkV1mGME=vFa
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fb3aabff9b6612e0b5d684ba45630a4c47638d3a
GIT binary patch
literal 2878
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c47703b6298b00a117ce5b2d90215e830527e9f5
GIT binary patch
literal 773
zc$@(R1N!`lP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10)k0IK~y-6jgn1BR8bto&%O7(dGq0n<IMO?et>9Hf<!{}T$MyE
zq6plS_?8ucfgo9{J{FamHbLbg7>e4oj|z#hK`22ZB8|*!%+YZeXC|FDGw<DdTN&fv
zK>y{R-#MKBxtB;OvC~AtMD+x^E?Z`NkXsp>b8{4ukLiZY7IVsuY5?9EeS}haqpkZo
zD0N_A=JvHz?5zvHtzwRrGqAGJ!CmcrQ1J<jPoQbfKm`c77zvYYnz9Lmoy`j?20`P1
z%t3IM1i(tUvI)50H<#v~^IX=6LOz70*=LeSc~3W__^$-Ku>L5MTo<!b^H(8-CL~4y
zjFoa^r&oxCNfT3juchREDeR|G<fj0v0*HG8UCF&i$17DW@TIK5<P-Ou>ejxYQ1dAz
z9eZQ{Nqkr@<PzZ4rjy%d1-H^fHzX;00->zGs^PGrX&P!<jw$}S1J$a-0|*n~Sxk?g
zE8jsROm;IzWzgvg0EO=;a2LM5AC}xo6A;P?r~qMwEuNN$_cO))uA%LWB6$L$kOAXs
z=;$6K-atp5G3O5{?RtH{uGm&$Buqk-IxZ2)hFdx>Xzr?g5Oxa5<q7zM?NF%&z{YCy
zBTuZ%M7eEt>W16^03{M8)gbhjzrIJUX+6ml)q`AS4nIFXEC`-|wYu=)NNsbE77PSw
zO>G@BH$sh>)KWiy2LM2IL#{FAd`yXiqPUP+ektdt@0wOVb^74h><PhhEo;%qZ}HeH
zmwW?WuTND}*Ok%}yp(Cb-QGsGxw*2yt!%Gu$i<>=Dw(1!`g~QsbUK-r!X7#_!0&JS
z2az!8V~X=Qw{z!pL;h>I$fTDk&Jk|s4Be2wxAuPlU#=}iglpcV00000NkvXXu0mjf
D?2lb3
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cbfe89282ee5f19a6dcc5ad9c2f0a346b663aacc
GIT binary patch
literal 1102
zc$@)F1hM;xP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11ItN7K~z|Ut=CIvokbJ}@Za3LjHyi((b}r5%}TMLR&b-VZd?gs
zv8W4CQ9;3O3qDrXDs-!$prYbJ#Y!m%f}1LJBlsv(>Z)3;HMUCaD^1cQcU;W*Zob^!
zv^OCKhTP1|Ip=@o%$)E1Q_dNrloA@~iNDFL<QOw(=A4@@B4Mj1Mv9Tqtl7wra?X`P
z9|kdm%WBF(aSG!Y!(`5RdLHKu^oO0x<97-h6QMtjsho4}4ZR*L!*#eFD=|>B+YF@x
z_#MYnN@F?anGTWn;Y!?yI|E2h1n@V0!e2OpX@PDKBiJr!nmzKlBN@f!*gJ$q&RI2-
z)D7b{?CYT4#CEI;pQ$$h^kO+S$dZS!qU~&t;!7*BHH@6YR7z>8%4gW>$5pu5Ft)_X
zN$ira0iWZa3P6>D{?@T?!P+(e%{csDY?OT)CMR%OxmcAnBDx+c@J!4e#xBCgK={;X
zQ>_0#R~mR34JpiyM5F_8@v0N3UQ_C1rrpo{4m-&R9s}3n3EY4yloT#X76t&G3b)C9
zxGTU6rj+V$e!l2C0$7+*KVC$M`dQqhJiF?>cOxyImp*}}a)D0O=I+1)C|C6nTyK%7
zxHNzrco_HN=i2=9$`wo=RNnnHW-I6t0yqG&DcKHDyOemhAsfJRSfiw(uPeJ<11K^j
zJL*?_Sev~U8^J9~QdTJ?z3Wrx7Qi(2NltrTxf7LaQ$9J#qXFb<B^65wU<QX|yG_Yn
zSE{>kw-wnkJguZ+SeGxNTL2lO_!>XhkKMJ^>Kc|hze)M3E;)cx%Gcms$ysmU-&jp}
z0ew=uiV<DjgN0PWiEw#P_OWx=SzBF;Cy_13J-Vz33jr{Lvr03u2M2wFy|o>WD_{C#
zwelR76hPIM{imejEy<*vN^e7n`6VS4B<q(J0Ob@Wa2)$(yPd$BwH>$O3w#=2mKXq~
zCY-^a_ymXT!H=~a!^)lL!g|BpzO5U{IIpDQH@uB$uf=TlHZt-;PN1a}-S9Y$;XBz^
zj^MooSPNN93M#2maReXWn2&I1@c^1JI!VQ9TB!<lG>H@8_8m>xs~54-!B15zX2RGc
z_{?luezLVb-obQJVLGGOE4$l4o4kV6Z97l4epP;2opeP^)|sD}>{F`!u+C&;NGZRY
zgS^Z~Y%U-s6*ufvT8vd@saap39K-kcLpkpAH6l_XC=Kb5(iN@2`fyNB@uW6tmUEuI
z7&)z;=y`<&jfL}$8IB+ZLVwWQ&ZuJ67m(9*33^_q<umP(cK}h5j(Uq;Nk@AAKl^H6
U8?D=nE&u=k07*qoM6N<$f(&N+=l}o!
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..88d97f99f81ad487f903bdf06b3a81a5db0c1ae3
GIT binary patch
literal 1683
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..87eec6195960580f581e7b9975633913bc0a2e7e
GIT binary patch
literal 538
zc$@(m0_FXQP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000D?000D?0em!Tp#T5?8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10hdWcK~y-6jnlDfQ&AWN@ZU{dj3p$mRw{}j-R$C03KiX37r{vo
z{0H1sB<Q3RQTI%4g5VT%QI}4-HH*-8ETW@TTcpOk<T~^gt9gRocJDdoyXSuQo)BXc
zLa1XBHG9>^*BIj<t%VRW<T#8X;eE((PRpv?hTOV_70e=wF^Vz5w5G1ynwC{8B&`P8
z<`p`kj%d+P-3y#RNDa=I)YlQsE6_%xf`Gay!5rq$R?&13i<k%@1Z1iSpGq1+MOjUt
zt)}GxW>8HBjn%$`-{2Fx#s!>pOwBDEEzyQ@2hWW>R``g!DjKfhe42i#gFmZkWXDT)
z3?0FBhqOGx>9T8-%^-@N`eaiVmvPdJ;M)H;;Dc>9b^P=N_f<7rG92fZzXCt-&Ueq;
zGja+yWUh?!vvguCY4X{?L+>ql>$s&-r}1A7B8J$s?Y3nDyXC}6BKK{HdPznR_x|rL
z-q`WVvXLHo*h-q@Ji|f?)0(C(rVoTD!>ooCxpldXgJBAP#W_m@{1#&@_HBj`Y6-8W
ct$`HhU)1uA*H$0&Pyhe`07*qoM6N<$f+qa!4gdfE
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a128bdb6bf1a4f32e1a691cc0300ade1080d38e7
GIT binary patch
literal 2454
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
UKaOm2ng9R*07*qoM6N<$f>nN>uK)l5
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..197b33d56fb32ded28df8d95185e7a3ecef37f18
GIT binary patch
literal 4349
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8ff47406e831a2f0fca339739b99452ec471350a
GIT binary patch
literal 863
zc$@)W1EBngP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10^CVNK~y-6b(2kKRA&^1-|u|aKxPb0Tx3E_)HW2f5p_fnvQYe6
zxDpq3(?3BZ-MBGcuU=;(EfXiBt|T}v1PLhO!a@;+RtgCYh0<vPiY}57y+cgIsLb5C
z^K<7rr;8ZK`17m|oR^owIp<X(f+bSvWCTE)W4rTMMk<~BR%?Bdnfn1SfR`dN=-BRG
z>H`A{z-uD<gPD^69uv`J07rUyR<BT`@Zz~w5s~j4+r0w-D)&7O5K#sIn0fF){QS9S
zG`g)^E(gY#JP~OC?EoSG>OJ!lXTN!M|0n>k;S&}SWqP*`^a6mF%Vvx**TS&gzjoc)
z=$nOwuZqReG&6tc*lryFrhYm*-MwX?4*+H-vtxvh8Lm{SL;0D!Uk^jpn)-<-z0?#S
zLIe=KuLIq7+{<M>FPHV0dC;-l8i5}Gs0QWWXJfd)%*Rvd<Q@PJ=3|9i)+^+)o-iM?
z#y6b0uC;!_%)g1q{Wt(cD@K*@7pG31xsggIZ;Hr4A{rgJFuaDgrgElXMhWJ&Z6{_d
zt@UI_NBb_{_xq~V+T6%U@(HzA0}_e`05R03TkvZ%8tv)oinUHp=XYpQl}2b~06_2E
zx4TfS)(&@ec1C>P->nqIy1TnJmP$TPJe-)<TK(S9(H_&<!tCr^$i_@og782hkthKG
zIkx*JGasIto6n0#L?HVjkthHt1zZt`yn9#l-oAa4YSej;Qfhl^tF>uqsTKe@wtE-A
z-BdccUVwkYuns`gEizvZ4J8Uo;*pEPw@7Ja495Zd4FFANbZqyjwkW&sdci0qf!|_^
zO$QbnTG_U;AtLQf6D)@tX1p8(t2WPEyA%taJ(@c53)q;!_?X-i5nU{nYGAtcS%XF$
zSHrM694qJZz1w##e&|2r831dPQZ;Gtq0^_`{AUeZcQJ`mKb`~FydQlra7M8IjN?9B
pu5U`?a{l{4HH9obCigz2`yWXhb?CUQsA2#B002ovPDHLkV1nDEe0u-@
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..36e2fafe88a8c0e45d05c3485d8adba03601d18a
GIT binary patch
literal 1986
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
Ub<`7<Hvj+t07*qoM6N<$g0AVMR{#J2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cc2660dc78c3d13fa7721b1452e327d9862e9076
GIT binary patch
literal 3175
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
N002ovPDHLkV1m<^9UA}u
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2d060a15886d0e38253ba18986025fd837b052ad
GIT binary patch
literal 694
zc$@*Y0!jUeP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10y9ZOK~y-6t&>4(6Hyd}&wcY|-edwvA+a?@Of|D9XbpxET(k=X
zHxl$W=+3Sbrmm{%reJ@8^#^n*t_1}(NJ?9kE{19Zn^tVV);dX;H*;M`VpFUjc;LZ<
z`?#EU?svh=IPUna%YUmgGl-dSSSv&&N|_!3<@kpl6G_=%pvL>*!bRpfj)<5UZ-|Nn
zEE=})jumcYyu2;P9WqXuh;~BgjeuJVpE}gVqo@;|W8lst^C|#H01&`1nPSQ;Ca1I2
zf^c$aC_4c|N<^nMx)W_u)9J+S?B;E*A25gUaL<7R00LTYNN1}BH8eH?Q>ng1X<3k#
z1xwjL6{1;L@6sMxy}AH!gHooK@$#0FOT$zOGjlD>%>8=PyPHbE$)%C;@)o5`?{I?}
z0cAPvkg^j;Ga8Vx6OiK$5m4@j=({fOf850A^CGfmPl1FuwgJa6c0YVZb9xo2GX=Q5
zPr~(m5=q&Jc0xp2<Nl&R{VffS_C4@m(Lkg%qMZ;TDI2cuQ|}94pr$th?snR^cA2rX
zEby{U*#8c^ULibQHgNrFgl?w|y%8`2wE+%Rh)PHsFGinCB!<RDP+PO{^qIi+S0Hx+
zs9cFLdA@^hjW1|c*4x;Nrg~8INnCZzd3nLPo2?e)00&y5+i4@%-ox(frq*l0!(tHL
z8{hx{!nWRu>j$z~S=SjaZ~TG82m#9|jJFQw(|1rOau~QNfLF)uLJV9YV5!6${2tB!
c-o}5`Pre&e>ztz4H~;_u07*qoM6N<$f@eZ4l>h($
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4d08551d9c43f547dc0f356b31965b0c253d8407
GIT binary patch
literal 1893
zc$@)c2b%baP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H12I5IXK~z|U#aDl5Th|r-?t6NYEX$JZ#F1Lha~*f4wDq(V7Rp>Y
z5t1#87~0__bRlU%Ni)VeMp^vFn?oVlp1Y2cjg-0z9mEtT9!r;!HbbPKI$A=SI_cuY
z&it!eZOcwv>t|%klJ2|r?hot9k}WyjVD!M@-N(D{eBb@fIrrU1gb?^LP5M&N0hrc1
zQB~Ck&1Umc4u_-F;c$GjuC8vQq9{@_nas@1%|)Zp=nP}*AMtqn6VCYvfI&^u`2FIN
zwNjv}s=2bVvZJA);XqSUlcTP#&R$+#E-8uv01!fe5Rx0G(`lsBX&w%T7cX79^u?V!
zcYc*jCQq$Jq$B}N(|%N6U;paPojYsocDuwm$9n695CTF7!r`#)^ZA0))6=ic&(FWD
zX&SpPfg?wbJW^X*d$zT;waMjjDgO;{F(Q&AArgt`7cN|w8XFtis%hHiB?+ji>S}Io
zzTVc>_7%=KIKOWS*G+^Fg5KWV&qqc^p42pLb`=3tRm<w@>-+cb-~Sk63_=L}sc#&^
zlTkd=vKgMn4J83G@ouoBA4=s<;2VDv5>fE|$KNihMt67j@WjN#lbWW*fovP9s!BF)
z-1z>UJ$oKyjKPq7U_1o>r$Nkw=OKhB>6wKaNJicTOHX1lbPZGCPgc$0oP#ljy?ggQ
zQd?Wwr>d$YN5E>e?%TC%*VBX$qU$;g`2}a-jKLsP${7{V(*R=vI%Ux5^88@<+VZ??
zoZY*3H<y=}znCLXRaNzKm&>J4N^_H+e(5X%H-q4eq4S-7{Nl~OfrUa~ot>aNc0fOT
z80_}#ECGO~0nP+;%AwPx82z7}#GkM2LH}oe$i>xl9TgQ7vdiWA83346RW0AXefw99
zyc@=OVaG7Wplceq-w#L<@ZpCblao+-dZ6n9Gy^bQK+iBhX8819-3Z+N4NQ^+Zs!vP
zu_>kScsw<#sy-+I*z9(@EtyQFK-Q0b_XB+UQ5QI4Xn*bry!PW3;Q8l)0|y}cd=T5V
zfesFWO-w+i0yLKbj#MfI|G+VDo#4Bk*Wq@4qaZe=6g4$9Rsav10648ytI3dm<*GSj
z;4E7cjg1h&AgIp=Jrn|?6edc+bbw|6UFV>5S-GuW@4)6wTUW&uLcnUZDgdfY00w7f
zW|CD^RTjnyWfz=-Gq!Y{o5R8jFMyAZ0*V4qnoSjlo-IPb0i7;`jRpPiJoFr7Nhydc
z%Q9lISPH<uB~8;}!C){U%krw~HVAOeuz2o0WQK-7yk6KYUIeq-p;HRMIRqCF0^n?^
z00om#Q}Gzaf&sk$@nJAt*hR7|BNz-W0vMM7V0wD`pOPf4>RpRMz&XQP=l+i02c|$N
zMe6!>L|a>tnVSQp6nZFBusS`%pl3MRo;nG;`2pM<J%>v-j~B#M6a@nV12;8ITaW-C
z6bij~_3G8I&1NfL`s{bUh6k!`kRV|G-VTUYjzLeQfW}6YcXa^`4M@E421G$RmfU8k
z#%}K);jZ-H@rRzx#Vji;!|?EMA{vc$0C`(+XJ_Yc4<0=DvaahA%?2!LoG-PZF(w2;
zq#<|)l57J==_7{CX2ZRE_fluhoOxYU)ea!<M3hJ*e%aI0({Hg@xY=wjz4a1OI0gV>
z0g)>pAeVg4VzD5dPSf7r-ggY}0tEm-RaK?By88USefze_vTRBu5~Y<`rx8Nna5z9I
zWv5P^`k=kN{h5O2E5G%ssuHKud9tOY<%b@R$C*qfv9Pf4KLI<PP7p%Gl`B_5w{G2f
zH<3vEbmgI><cUaC)u!s|>bJaJ@3$Hn8tk!HY)wE(lAtIG6h%Qch2rw%%U=u*4*q3+
ze!fG~v`A5+r3es0Bmm^-(W9>&I&|pecsyS4Tu~Hbg-h+3O6j3cXmNIScJc1ryYZ>1
zsf!~cBgcArdLjTg00BUV6@UdLOO{TU5`f&*WHL1yo0MTTn+;a0Rh&M3dLkB!4J<A$
z4ur$ufoL>3?(_L3<MBAl0`e?|G3JC20e~AsOhv#8eAA{)4^v7Zgn%r|sI08S?Cfm1
zySw|ZU0q!-&CJXgJu9*<XW!*{F0zXv*?SN|gb;$~D?nCydwYAE*Xyn2oWt#QLy{!;
z{r+em5P0SI@#AN+K$bj^e9(O3MdAxWNXZ`)v1Q8^^M(x@I_-A5ITDFv0)aqubaeFc
zjT<+9eg6FUX(I>#qpA%Bc-}bQSAz(#Oh5?1jh_qvq_MHFER{-qbmGK`!B{MItFN!`
z<DsFU43=vIc~^r#F(Sp($<;v7E?7|yt5UO00{Nb+g_T{f=C4_ni~+O~IR8Fh=2b-2
f!niMi|F``IDtW1@GvPI<00000NkvXXu0mjfU)+GF
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e80b03b16551d1261b592b440491eb7adfaa3714
GIT binary patch
literal 815
zc$@(*1JL}5P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru)(IOFEeN+|J`4Z=0=!8?
zK~y-)wUbY19Ay}XpZVs`Zpk!s7s+a=Y!z~_F_K6K#6xlsJ=Tjt4hHlPN@#*5f=r^|
zO354)%*KP4y;RUc4T9Q;h^IKHECH1mLp4PS6>MyG-E4L<GvCa-9>h{3_U7;W{+{>n
zJ}=xQp6BH}&ok~eV;m_Q2j0r(^G{}3))&XIGEEcPwzY^fqA2<hnDc!<`WL|Syf+-j
zxiB_1riO=yDHICWwvC7oMG@_GoAvc|+1%XB;yAAQzCV9^^Wx&-yDKXza&T}UX_`uO
zcqma6Nf?F_hM`1JByk)|mSxiEbYyvXSr!%+Y5=C^dFNf%eQDyUXYt<uj<E+%AY0q)
zz4AJ_;Q=h;TjHG;xn>M8^T~Oh8F-rhNBX(?{nbZDMn;;-ah!#zsVUz4^asAac9WTR
zHZULRN1ZHjW4=PFHCYmJ+;rHF_W9!HfOA)7n4Fx%ahwa5h}_%P*T>nR1Ah8#pG(h=
z(7yaJ;g=g^-7XT|0t329N|GfkeYM2O<5fzf5<ppHS!O7ucw(SL?=hR;$KUCE^clU2
zb11h5l%^YIT;Kl{(=aLbp61n{f=)Feg0d{Dy|=fA<2Xb~%9U@fqwYUR>*6x%^eMEu
z2hu|Zix1=4E=!MHB$1S@U$y{t4bSt=6^q5UXJ==*@kfVtyUmGX7Lula-Ptt%A&%?1
z<Z?Nx)hex4Yt9UUU}JQ2bg*8ppBWlFL;2KwgkeaMrU+md29{-!&*v!?i)gK>)oL`G
z&6@A~FW)KBS=+WRkB^T#6B83O8Vw4C0!k^m-7c+Giy#Qt-ri2N*0)7Es`6yHTz+qQ
zdYWdl$?EDVySuwsmZgD49LFC3FZjM6|J||f1em5d-_z5>+S(fRdYvRmE&<O~Di!&!
tXF3XaU}tCNP;0#*BCq+r|2hA6{saf;O9@9m)p-B_002ovPDHLkV1l(qe5e2b
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2f04aab9e02c5f09320d2800d3e583908a2f3a88
GIT binary patch
literal 1957
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9e92ad97292960ebbc2391fbb59c3ce804ebf21f
GIT binary patch
literal 3342
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
Y19#_cN(V5h5C8xG07*qoM6N<$f+fW@iU0rr
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d08637ceb7da661562164b8680b2d7180b79b351
GIT binary patch
literal 926
zc$@*A17ZA$P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10~<+1K~y-6eUo2kTXhu2zvp-F&Aquz6IPQn+2Xo(!D_ZNW6^c(
zq;<p<=0j_Z56Vz+kT>x`_Ue-l6CA!OWG%jJ535o|r)<S)r%bw53LDZ^h9Pa!f2%aP
zUGB~Ob9_*tE$H{{aQJ>W9KK&-X8fOquBz_}i7v9oJM7`?c)@Dy-pjj(!J?X%B)UT2
zifz+dLU1A+Jb1Y`lhYT=56t=U><EB2c6-Dgnnag#+5D02bndjQ&>a%^^yD)=x*?a5
zYCoX?)W842Jpcx`gqlN$N8@xV)gNZY(UxEY>((NK5MXd*cvRgS9@Q2Gi)tPK<e{Rf
zk-!He=sZB`H$PuPI@N_lBqfCS-q|s0NCx^)Sudg4AJPW8U)5^0+7q{CZd?H{CX+xh
z9yyfHKJ|iMmSpUhRs1wJftWszi;69p?tR7!fy0=s8uVPY8x66IhHEjwtNi^$ru_5i
z^Zrs}8b)ISVXXuCBPk@-=aD@9nh=tNz}y5khjh4F8<r~%G5y<*4co?h03b;4>XxyF
z14;q_P<OWxDgT0G*NgC}7G$}OWcn-xt4p|f_d1p~|3Iq!q@*bFt)Zft6P}C05BI(^
z9<9`zbkiVWl)+=bBX+^gD%f2E0|?1Jq_am6>adV#i^+Y@o(l*GMPg<Q71gM2;D)K=
zO!J@M9>2rc!>v-XtDo3)@caEKEJZs}YL&6sc!;1J!y(@Zj7^NziJ5VYs7LnuZ)b8j
z{n673J~?&=!yTOnuS~;WV38%<^>m!c<j|xA;kXWF7AEVJjpZ?7W?UCyt@px(Xp1D_
z(y6bJ=^Mafbp@7dpq08X`Ri9W)|tlKgISo3x&cCoJ-*2v-j@M@h&F7)h?ub$*{%&;
z3!-FBL6C&@rT~ncD#8a^@lx;W_<VB2`r>Wt_?|A<p7-YT`1rR(WLh7}A=kBoAtjC$
zUmF(7_Z<+q#+L0frELOeYj=8Se;Z#OQ9n8uee#{&;{)18bs1ALw+-8N&M68$W>DO9
z`O=pKYwSM(|3v#L7_X4Ps^_9GUa%(im*`*p1+&pa{-LNSl>h($07*qoM6N<$f>Noq
AoB#j-
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..964abdfeafc29896beea832b264ee0fac6fe0d83
GIT binary patch
literal 763
zc$@+I0tEeuP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10(eP8K~z|U?U%o66JZ#~zt4NQ5IhMj(W&kY250T4j>RF9V1_I%
zqJuc4i)qMklS3O23W{{e5b@6lf>Wdv2{gY5IK+gINOHMe@;(kp+VpBq?n-(N{lX3R
zzV|%O=bra@-j|n{8GcIm8vPpJe*g%$HOOQ#A`}X}6GGhg5bsyN-+!IWW^0}SMx)WA
zWHR}3ZEa0;Yb&M1&d!bi@We9!Gv5k_!|Gr#aBB)p(?CR##WCM&z;}RiOOQ&X?%C61
z)7@sX2_iZ(7>PunY1-ugbY0IT5{WmftE)~0M)u$UP%4!Wi^Z_Avf>>e5C}YuMx!?j
z!*JyU05&!@P%f7*2QZhE(lvlr`Cf$A0KNmb-in>1C<;{dw1X#;38a)z6a_*E5D|!I
zvNV8dwK_0O^LYLqi^am4rYWsf%WO0nMz`A?TbA`<X#k~C=|#C*{tN)UUXO~!VlEz!
zKRY-$XdNCNMgfe|>GXJM0069XIz3u=f3EBLSJO1#Zf|do{${ZBBHY^A`e>Tw!;9vx
zqziOiuU<5FW(k=2sNe5D2nK^Bgn*P1s;a`WEZDv~cN$hImEmwWY!Xp$VOTQrnKgF=
zFbw0>-rnAKMN#goudgRIH#cwR^ZB2(TI~xnGZ7Ip6M%VJ5imU-+wJzZTrT$mz|94h
zV<M6O7{CO;*bYRCH=~(D6@a?CyL-gUokF4Tv{)?ucKQnknE+@W9KbOEi<wVa)!qd(
zdqlln|Fplq|Gv}djNrXiCICX1W`JgXXqHI^Y#G3GR+)hX04OsjUN4aIj7pqlVa&`Y
tyWu$i8w>#eU*ZP)FCUHoS0Ud|!#}ZA{jCG*i*o<~002ovPDHLkV1g-sMKAyW
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..606425fabb7aa1d5e9e490ad5d74bc55c4c94262
GIT binary patch
literal 1003
zc$@+20~Gv;P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H1187M^K~!jg?U=t$BS#d+zi+%+yV$I+Kr(0}Aw^M&6Dgw9`~gWS
znp2ukAkt7pbb!S+wu=ZX3W}Uk5k>M<oP?AJQV=0gQKW*TqJR@Q5nG#h5zb^iKT=>5
zo9u$QTeMi(k2LaXy!)N^-Fa_Dv!u1gFvF4#;B83_Bu#1{X;K48W5g-8w6ye@VHn>k
zrN-jaWsJQRLVQ^+mw&kVU#tcU!+1VFKR;&McAT>CeSfT4tv(0v?*GP&b0DRZW7{^G
z&1Rgk$mjD=N;zTw4Sfxy29hQ<kTjvI(89vP$JuOlg@``5k60#?LA6>%)EOh6&tr0O
z5~HJ|ZxCuYp$4+q?02)Xvrh|!LTm#8!1?((Ha9mhJv|+pW~c!v<x|ITaB*=F+du%|
zI1cLddaRnaZe&WSSO<FuhQ5eX14)w_NSf3@(hR+USWjew5_RMZf&iRz<Z?Nfrg`1p
zYPG-^I}dv%5d)P<rQNwC0MJ^)vMf0>Gn2I}3q*vqwKdUhw-o?z&Rar=ufntvNg*la
z6Dj2r&+}~0^K7NmJB>!;lhxJL=IQCFmQup^{ogs~1<rZl=;&yqTrR%|(@JCpT-R-d
zbpKo|7C+qB*!XE;V&Z)wQm*U%b(hwoD&kV9^olX|(c$6YOCiKRgFKVS4BUq6x*Wi>
z#l^)>2f6=I%|I`eO6A8v?t8Qb1|>9w7-PN=!nQ2yx-SR<1VI4PH2c=*`yhk>5&1+E
zmAXo6eXmngsE|^sw6d~N8Xq4I0Kha&V`^$DXBY;w*4WzG;>~7L5)lBP_qTi9g^0iy
z(*SUCa$<7MzXp(th({8U2GHA-)>=jxpr|hhb8~Z!VHocTA=t>s$ctjJIC^<`iS_mM
zzw7mS(eu1twAKUwjIr*9L}7j1>$9`7SG&8re?$cXppC1|O#@IpO#+Z%MnY$Rh%x}`
z0R9A!SzcZa4h|0F&dyHr`1ttqTCMimEkWEx)Z0fV_{@#KMW-J`gqtR!a*=u(lTwQ9
z?d@Op_V&Km-`{@?;LVEQZm6RzI!)thp;0~Y^buvCF9&_!|E5-}ecxy_x^Lv6K36CJ
z0s7NN-H4};$QtORQMa+47Fkd+Vc;G$5NY80hASfs|4m_6{2}PRq_<y%hJ~TuiBkhf
Z^Dp>tY{BBgkX!%&002ovPDHLkV1o1+&{Y5c
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..19d578deda123c41b441aef78f147fdf74bd426d
GIT binary patch
literal 454
zc$@*o0XhDOP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10YgbdK~y-6rIRsk!Y~wuf8$utFeE()ONShwW2UYgp<Bm90fy94
zrb<0UyHzY%A_fkS3-lDFOM;s`UI#!GkN{DC$+Dg-eeeChZNbbq)@(L=tEy^za&RQ2
z)H|5@WCcOMbzSp0)pgB55U|xomr`Q2TD5j}T^9h*yENt{{TpDl1r~<kK|LCc;QRh5
zpsK2|)*4dE)-FVZ$z;+D0Im;gI2=Ms2_XcC=nrtM@;o=5=k>MLv|g`;Qfl4_kf!O&
zVzGEC%kl=mZ5+qnoo+#E9Ti1!2Ve=n039s=K$0Y%0Pgp-1#DAx90$w{B7$Wda`%BX
z$x=#vOsCU_!C=5q6v;f#O_pVSBI3<v!~6fCl$tjI1T!NHLkGZ@ZQG?W=9P$^0sH_E
w*uK_Yk|d^ag57QaEQ_Le+<823a3&J`0+wL8z&BAwA^-pY07*qoM6N<$f>sE!>;M1&
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..30bde7eadad28d8218d896a18a3e83e1df447d57
GIT binary patch
literal 1610
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
IM6N<$f})@Wv;Y7A
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..075518894459b42b77a1ae28abd2164d0552751d
GIT binary patch
literal 2780
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ea9f2e36036cf353683b67a2f3e76744306b9a11
GIT binary patch
literal 558
zc$@()0@3}6P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv00000
z008+zyMF)x010qNS#tmY3ljhU3ljkVnw%H_000McNliru)&dF-1q=K)jAj4;0lP^=
zK~y-)wUbXs(_t9LKXVgJi#eEw6haXXKLc4gWM2B+x+M7L&_(egbB8eOAc&VWC=UvP
zg3;1&$hwG%B<i7q{6qqAmM-0bF$xu|w2d~!`DeafW~`r1l<<3ep6B~{AKvf#!hcGm
zE|{(E2f$<CiK^8H414<PXHx<aW~IHsf~m+ze(p_<j|F=NaXu`r)Aep1Ku(6FsZMEW
zZ?I5lDZrSM#ctpQd%>3|zAY;5-sWko3BZ<YPy=d;^Ym;-4><bXfkCokknG5}-lF)n
zkjn}H9wr-f>N^lX=8sMclAW;M0f0fW^9Tp=j5Yw{MH^6*pTkaWD`CHbKzj2(z2(5q
zGbyM6gM(A6q-!<IL>l?^Ck8;+?;xaaL0MV{=(#Xgv(+sICcPrK85P|VUq#6GT!eS_
z#nAMMFk9V1J+C{5A-^8?DkWMM<&g<Kef*7nBSP=keLVg3noGT|ITs=pS`_j4p;%jZ
zCKg5{G3P>@H>*p*uzB8>Ik_Pdi+&+f7dn%F$`lfE-mCtGrD~KrQXRWg064F-!RPV9
wzlQ8Y?NXoVR8py_33vr)0h`~u^oHxu33a`h?>Y>M<p2Nx07*qoM6N<$f{B{%(f|Me
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..61af60046c5f14c76a8d55a86e015da0029b6152
GIT binary patch
literal 2098
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f747a560024047bcd52c22952bc0c4219e06424e
GIT binary patch
literal 3647
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
RJTCwM002ovPDHLkV1jD;!<qm9
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..59b819c525974ffd393446080b6ccaadf8df076c
GIT binary patch
literal 900
zc$@)*1AF|5P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10|7}yK~y-6Ws}QK+;tSiKleMY&XXBn$~25)V;OA4Vh2!TnrN|2
z<I2APOjqi{XpHXM_*m$=O?25<61#KJw5i=x7RE#)4h5_MDbQhHrc8Ns80P)^UKfT+
z+PgmY-gD1AM^u$3D?2Vh;C&H371*=NH^BFq32i-zbwAY&2z(Mwraw!Job_7AVg0vT
zm#Q1ND)7To*gwYz1Fwtl7RnigAu&=&zx`g9yS0soi@No(eDm_0RfYv-5PnwWCt%VI
zQVjMaZRBtwP`WqYY*))E0Mw$TdDP=aBkBExX?HN1iuXPLZn^YeY_GWLH^%5f;)S75
zEYV}a$+QLD#OlT3)a_=wXP8z;KgFrZx>ddgMkCMk5$%qeBLl-BgXZ1Va-&jMKIx4|
zU0umkU}rJ=m0EkMoL}7AU0XaT;-nbYY-cj%*Gi5`ZQEM4*9~xME4SQGe>WZv#7~UG
zMC2DBt4hCBhJd^n`6Kb-NZ3OI!o6(WU#h8cLsXUNcjVjfk)s!qFTLzX9d@^O>`rc}
zQrX-%BtWq9a3gl~SSS>YimIjX_gwAK>OVi8x}sxl098Jy6ju83s;3hJLxFI2+=P8Z
z7|i@9U1Qfvu$xw+#>U+{)!o9%v?><>WZy{Had875ip%q5d|<@W+2QkYZxRqReU{CQ
z?dImfbW<JYbKv5>sm%U=G85VcZev?Jwq8^5$B@2JOnMXvbkeTZ9jucFt{rsbK?eO8
zGnE=X9Sn8G#p0qc`+Lo*rT643e&cpgF0R?N>0c{qbs#gL`Ns^h<Kh?LW^!;O5b_~f
z+oCi-TQ9HQzgj7*UM|c{RjHSWguNzld@vxwwd}Z<gD0Fj6z=GWBzld_-@);9v6)+N
z6h2b;xLjD-ZMF?sS|FC{bGy90G%)yhfC%Sf&z%V1@?egiW3RNXM(y>?gjO;W+EnGz
zqxF@BJo_pb7m;Mz1HATs8kIA}yED#%zh+cXtkZI#Ts;uFD-W0Ezt~#MH9$~x+`t>a
acmDz#`fMieQD?dU0000<MNUMnLSTX+53H5|
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c06eed2aa402eeb24e1d8083ef5b427227ba1bfe
GIT binary patch
literal 1660
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
GLSTYyM;=Q6
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1b960dd327dbeda55002d9fac245c07dbd04fd90
GIT binary patch
literal 2778
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..896d90cfbb9042179468285ab71647faffe2651c
GIT binary patch
literal 812
zc$@(&1JnG8P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10;x$vK~y-6rBmBW({U94e7~E&-`t$eIWIV8o48hFqM4LE6+|y~
zp@%3;1c?you^txo2N?PwJ@k-C(3?Kh!yt$#!iVs(WttbfY|b@jPMx-k``u126-6dR
zA2?6vb3W(8hjSPa;eVk27jmGD<uITJKs$gh1YBl+>mbm^3OK_Hlews_w8CS^Y(}vf
z3(f1R&fg#83>P%QTOzs}^mzk&3>z6RVl8nxZPqe@;tR+tc7tLe2M2JXwx&AQ<E}hs
zHi^To=I&lsbGPAV0R}uNbR0fl%eM%$;s-L@P&5^cu`LcD1rT(ifq6VtMz^!9lk51r
ztGWBwx9uIG)!tm3YZU3z2SAko!30^_1p}5i5%or+>nTCc5n4+k$CPiZJ5p6)%oSc=
zYwCQsDO>uAJT<y>c2Ua;nyPWAEWZTXiFigO8qitXXD2clskOMsY!gI*#kY5%fWzg0
zUI~A0+>i@(4enG<!J(s!n@yaG%DHT`X=|ZrK-1cJ(B~zMsAYO~Iic5N)n1$jy|}5_
zoC%%DmCIs@GCnmLg=8UQ%tq|MfXMtLS8eJ_{ZrcE01)(f-z$n*H#4`qxU~_XigJZp
zOB1jimjM7Xk{#h8A2#MjA&Ijnxq1e2ttJ8h|DJTv=M8H_^=aW{%0Cvz(13tfegn8e
z#$?h4SJy3+T+yT8R2oKCH8d5azg=R`=S^RFEIv5s4BfFhL}5#cpm4nbQ-g6Swh*E6
z>K0Mi9fy=z1J`5u7Y9E;=wDh{NYjo<vj}#W>?%@?<I={;yFhr_pFz%PB%%Qs!0?^|
z&u?Z!iXt}!rp6M<Ri-9WNq`}JvXz>)Vj~?N-}EHbgZ>HH#ccri<1bw57b_V@7bAY1
qn0D{kjcnhZL?YU^E<O_Ye*Le!rdb!&<w>ys0000<MNUMnLSTZJ7GnAU
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..be84393d82d58a453055160ba45669d3821a3fff
GIT binary patch
literal 2019
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
B&}RSu
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a07f8e1f9f914d473879a9feada8ad09d0916772
GIT binary patch
literal 3308
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ae8ed7782683f3af3f35a85e042fa99109e4df38
GIT binary patch
literal 832
zc$@)11Hb%<P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv00000
z008+zyMF)x010qNS#tmY4c7nw4c7reD4Tcy000McNliru*906D7!FhJ92Ecn0?kQ8
zK~y-)eUi&>TU8Lozd7gJo9pYxb?n%A)NYjqQV>W)EkdZfR&+zvRsRwGlkQj}B-nHh
zsv=b?5(pMykrE21YMRzfW8B!iz7OBWIcHcTDQQ9dR-a}xpMEnMy79$V!TDbM^U9oa
zjhSl<fEfS)J~qt2u{-J!#k0KJ+<P|pPObLZ*FXK}+^zmnvnvIGnPE?cm|^+I&vMN|
z5Tq1TmKK9yc%2zgo~u4v={CB|jH0w)0LC&WX;BC%grlUKgvq$(IlI%e5G>@HU-g;`
zt$NpS)HP+9Yk)vj8WT>F10iHZYlC;sv<Ca5X>k~3>+hXy#T)C(7fWrUZ|-dGrAE}G
zQYtTPO)vx6GLkee8=m{;EX^P1g^tfHH#_~M0JFTvT_u@_gi@kPM5ZvX+E_3H$}*$S
z7E&qaufb@g>U%+>UYY;)&h|qg#X`Fs1V8`&{J?_#7*A(<6zh&#u?~Y^!BEx$+5&Ns
z$7^TWB1-clNpk<4e#<2y{b-mJac)<?{(k$BQp)QrwwFr_BFiTPfMvjHEw6rjq4)PV
zPPZNm4z64}e^v+*(Y*(I?W&`0e6rEW3Z4D<+y3DU)YXQ_GN7zwl-fc_QFR?jy~V)q
zEd~oX*3GLQtmBkcSLUDIy1g~1&CmCl`G}yjz$`1VKMKJNv>HAto`e5W-FKJjo}5}7
zkt@rLtS~6aq0L_hu*UHF{U&c*SRnv#l_VkPRR9q=bB=097XRKL*NmBwNDLqV`r-aQ
z?>q^O5`;_Z9elX9sNN(wd3SOAc_@uVlxYkjgDHHm8?rhqq#6ug65b+JYL3TIi6}EL
z%&(FGAfIFGJ`eeqooD*=P?#2yD;^OLt7vkt^>Wg@S*ZsN67scl%fMmjh|T*WK3yl*
z$8<cIrr~f)4R-F`&7&7zdO_zhLHPfLB!J%B-=tYM`f2oJ=k7nHL5$8f@IMX!0000<
KMNUMnLSTZPl76lL
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f475175f2e8016562ae86e30d21f16d559362e3a
GIT binary patch
literal 1245
zc$@*<1S0#1P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11X@W%K~z|U%~xA!TtyiE{(sKyHk-}mAyThZA6i)3CsAYHs+5+3
zXhB2}eQH%Is9+P7cq57zNDwR(5%c1Mg(7_@6xUesL9|*43X!N(ag%P0+1Oxn*=_cm
zGxPg!&YsI&l5AAs?EYuxoSm8P`@i{SXO=_+n^|~M(f<zwtY%*f4ZU$|M`zc|M&!DG
z0>DJSFD)*-+TTC$U8C=*kq6!%d3R**-u(}4-FkH!0TB3Yf{*6DAyBmvl(}N@%Gu9G
zPds|~$l)~!3=a>t_uhF&e%H>OS1l}GhKN9nK*T^qU?AQz5kNdD1OVhg6ETPgL<A-R
z5u>ZK8xs>h{(1hJZ*T7F>np_+s%7M&vM-y>_AHeay^JNy*{k}%K^T~7J&-9{6D%z+
zBAd<jxTx%_#jEoGfl`W9M471I61#e!9t`=p2ngOg&;}v`#fk`&s>R#*Drjnh)_zyk
zLBN|^$xi_bOa2o8MBcpn;Ts_ELd=C5ArKDg4^}9EK0FEeV>Sj%zR?H-n)nHn`xKHp
z8&IG%h^(pr`7aP4#=y+X03#m&lNSS*GqLY>0>*y;&YcIo`r1z*nnbG#M0ybj&<1XC
z4!ST6{q`~7=L>ZzNX3R*oP%4O3vh!ZT2_D%0}!L3i$yP{F2Z@`HOTkl{<`;65Zeyg
zAff=#1_%&p=2;u);w*G=7Sgr_?$i`ko<0im<++e#r4qCuqBXN$od87yBm#_qzBCVg
zX&!BZFG1aY8{C;0EFXFtZf+FB3~`*G4b>R6Wdc>FgF+()of1j3AAbj_2Oj`j7v-m(
zf&I~`I^V2^K-1l@wo`0y5hyEx%+Q;l?k=pnH-gf$15h{J7?LCoeY6o1)_EXG$QXYa
zGCE!yK>Kt3fCzMcGL}GeV``lMQH(@v3M9Tl+Mj#^9dEr3Fvt5x#@HBvXhfTefc@oH
zjr1cAqx<+VAYldlIif<d($E8f&;#V(CwJX~&VlD40IX}T@kzx?+kN+fySnh#p~rk+
zZ-jrrgoNbw9Y}27fna+MFR^x8?!F5>Cr|jwg#?=Ik*g9Q03rmCgi?S&!5N`;rFfTA
zZ*T0BgjN&~nAvivWVdJ1Nu#y5l*Bt|M1d)GI0?b4q(TA&R*Z7FWDCq}U7`&RrF8oA
zsi^}8?zy2{E<qa&h%bEPcosvi5hI{LfMSJoI)hy9%=E#7_iwA|)o>L^VP^VhZuH~H
zQmJecDG)0#TVQ2@RRXFSRwN?NStY!-Y@t*tJGoEJ6n^>b*B6MW4zJ;{8~_Ff2iZ1P
z_A_{!t#!(AoRqjaX&aLgt&>`dB}ObE!(Jw=iQqC@j<S?(SzJ*}wlTW!#n|}g^OKXy
z`Fwt5-2{RLM11}3-KmV$X-gyxW0H_W60j4BS&0Y%fMzyI#1#>jl&Y9Al^y4DIg`n(
zjE#*sO#vi!#9m*(n`Q=}uxF12K>7F7>R4+k@L!ir|8x2`m0u<VF_qM400000NkvXX
Hu0mjfW~n9f
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8b8778fb52ed0658de3dce33c69f122ddaadf7b4
GIT binary patch
literal 1873
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
LNkvXXu0mjfsr`Pd
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..76ca119fe8cea95151d6de95aa3bf88b6616ccd7
GIT binary patch
literal 539
zc$@(n0_6RPP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10hmcdK~y-6os+?8Q$ZAlzyIXU1!F0Qv^z`Fg!m9$h`vBw^Z_bJ
z#f4HRQjpSxSSmq5L|l~OLdC7kBlsGnS_Kgyn|2Wjcak0#H@V(hOR3Icm|^(8^Phia
z^sKXaBZROMV{CE35klCHG2UH!^!Rg<hID&j;dX1TabZ1Q5B6K#?(Q~lJ;`F$Zp=3M
z@$)-_!2kp}I9>=enk8XoG-jJ*F>3=P0FoFEPcSpwy?_(|saU&vWpBm8gb>F&ZvkPJ
zS2Hst(8xhqTmcAyM1QNp@#{B8RtS36n)GJo@;y~RQno1p?({p)0cYajgK9Myr}QNU
zCWL|K&G$Pm=)Zhbv79@w3gC|e4CDo1a$}vNCr^=A(mcNfP@Xa{asM7RJ;mY5YN>^D
zLbOr_IncPgxX9HH@1S0<6gfMC5q*3-zQX#gn@oLt4@rWszZ?`TAj5EGdcR7?xtmM#
z^IX~5#7wxK0dRL}R>OUGT05pQd1na$X0`majsa;%_YS^&Y5(JAA`R&tK$695dAIxN
df4=iFz;7Rmeg~}A31<KR002ovPDHLkV1gI(;lls`
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..5f7063b8397d2edec38c95d947cf2436fc94bbd8
GIT binary patch
literal 2105
zc$@(_2*&q`P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H12ewH>K~z|U#g|)b9OV_qf8WgR?9O^G_O9*t5_=sdj&pG~!5BGC
z(ug2Zr3Ly>1XU3Ms<v;4R_X=uhN>d^&`NEE)T*jfRCu6BRDz}uaS@_I#wPdJA-30x
ziR}%J_h#?fyR&oq`VeFs5}Tw{;z;u{=ji-@-}%mW<{KfU<m)u$YgGq4w-Vgf*VimH
z?U$Ozd$1-@Q?IJ30^m57Q(9i0w{7=buXLUn8X79zY))~rTX1{-zI#LA;GcGG>)Pnk
zyeO)IKmg!MiF94cWkZgRPfQtQ^G7F#-hcQ125|eneUG=bwm!Y7y(K0k#G+BM+3Ynj
z4GoQCa~TkVRO(Xh^4#1nP7MwH?JEQH?%lg17K^>JvwL%sKydWoqjYq1@b=qp^WJ~n
z1K`M!BOKU&fbsEhUU=~ZG)-e<EO|MX&)<1wXehZ}{&kyB2q830du98U&ZbJaLVJ5V
zn>KAi2*JUF2XS2&fW7?#0CabE6RnF<E|=NSwYf#tv{!`?Vm*y@n{ao3|KZIY@m8Z+
z!M1JU@%W0*=ku|lsR^&wgU6$;yl;=Ulm0Y~L=um;w^hvkyMed<rwVvg&y#hvp^#x1
z*tWg0;$v?d=YfYFp;#(0pULpRLyvImjpG0;FE3-;HilsktBnLbisz~IG}Z(VLWpoE
zywx;KEX%^OEXF6sSNu{+W@l$er_-$Nql;q~SK>{pN;n+uI&|pJnw4JDv3p>kB^1;(
z!!U3h2Y|7$F~%n*IC9_)Jo!n^488*@Z0t`kkl4yg|9FW)p|Fy}FbqPWfR@V6$AQ!>
z0l2okrKTnjvMdvTkf?A_p27Uf>&yi;dUYS)=+*&PuDr(5pI@e@V&V71c;D%!By}vy
zq9zassZ!l?%K$2r9Y>m~qUbxA;@hz~wzNm^X+cm_5TEZ}Jt2@TxDE-^B{6-DW4Tt6
z>Sk=)t_oG=*V0)NpsS<fbRnNFb#07A?(u)hj?OUBHIdf(b3;=EJ31pkn&+$ANPaSB
zbaix`z9oRZzP|d$QmNmLbapn@)m4eM1d-(&NM~K~6%#7ax>{-{XW3p@svj60PTk+t
zb=ND&<j3m*^z`&-{!rw(SSWl?do<d7G#C^wj}@5pXNY!3@svLWtGvFrH-N1-Gc%K;
z`+}eQJRZ+NZ*M#~IXTj|Z~v<r@`r<igOwWs=;6p;ckSHv{eTc2Wo8<xRUW7q6i&vN
zTACx=9wQoSMDqZy1NLWmJUS>URSWVto6^O3;$s^~xDKMWmYGb3<=Ya0L}TNF=SIi;
zz;~|$=<Pkw(%e@6O@ZslWpgMV4}5mM>nxSJkygx9l|thJR<I13g5vi9;2KLv)5TW`
z5X{GjDccbZH7qy|r$7Ff!GO+`-$%^rRcj;R{d@N9Ydt$Sn7#(U6;^LF8i|z4Wp-W|
zqr15UnaQjwtrwqGi*9uy7d{{FQc7&s#dI7j*Cp?D$(bg_Y=)HX=fprChU%kQUZS*A
zq-jHAG@Hry0$&7BFI6h$Qu9*Lzo%kQFT~Xe=kwu4qg*jfa)v>*kVp9ZD*%eugEv->
zuek|rV=Mm7&1@am3w}S@w~kYJ?O#MfHDq&H8XM}ll3ggF$f@hLVC2*X7iwy>x#q;q
z`t#>Tsb5@Rdpu5hX^FW~iH$%18QTu*N7eQ9n{bsy>*@gTdAzu;MAvn$%ul4xpFH`|
z$^urE(k&a6@0=d_DEa=LJ<glD&an@NN$uXrZO31y;qcwJBn}|N)u&ReqU*YQ=In(@
z)3WZDQo7dx0Gt~ho|;e3?wZf$pFY*xY`%Hlw<zu#z;WH{vww*>jzb||z~}RkEi9OG
zbD3YemYFy^JUp>F?z*pGGMTJC**5s>Vm3P+42BsQy+CT}hGTqPOHHL18NEO#7-lh>
zoqj4l^sCk9e@%e%kBVn@MQhT(NlZ1&eKJn5SmMNq51CER-n95^dX^I>KBQPIG55(h
z&+bY!^wjF<^N)&Wz8HJWo$%aa;s>>Lwa+!SH3Z~RhV%1+-_PDbLwpOncJ<KJwT14j
z+tK|u?uCj`VSM5u$>by>Bco(4P4d&WQ|#UV1Y*ojUnwsvEIz*bdAV{~y=D?Ba5&Q3
z6p+OkFqcV$;fa<Z{y33ma3ROUM3VI7%hcC5pzD6>B3HY-uvnl{G00{!oIP`n?3K$H
z^C_O#G(jR%M3w=^B+}FpC@w4>237#BsleHX#T~wY@827{IvTu~xaKn0Wl(**b0x-$
zQ;le$2C4c(G8~C0(P%9I`TPRK#YNXKO2RB<#L><ycQs}at_j`%cx$j-mD%J}rdqM?
z+4G`2aYF!r^N)xgq4Ec*YTa5O<O>D^x?xn!a;fYtSF6Q$bM>cQo^P8|RHaJ@B`yG0
zx|dwXo%mkkOw*mwOkcpKg#w`(Mb|ZLsZ=(sa>>B8C#1tq5`UMYYxcl34k5(v?rrRd
z`<MI2E1~>9=i9O-ieE@{Azi-|!V9S4>KDTWOoXUP+=|B)<p(!RH*5_oMRQf{gCD<^
zo4%pQdH}0I5{ZPSs;X`)ieFU}zb&PvO4Z{EM*&b#9VxMd;#O_fHKeAMDHf}vqoek^
j$!`YW%i!c!{J;M%PsEG8R)&i400000NkvXXu0mjf-C7oC
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..41b8f123cf6036cbe0e8f447098502b4a37b0c5c
GIT binary patch
literal 3649
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
ToG>7f00000NkvXXu0mjfAd@;Y
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d5f51ac4c73ae9a714ac17d1227fcac9d9d23229
GIT binary patch
literal 933
zc$@*H16urvP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H110qR8K~y-6ZIath+hrWaKkwULTY4Pl9<T)_lY<Er1-oe$nZ}to
zoiQ2lhQGkYLyW|DSYqOp$vnhFZqz$3OcXbD%$p@nHWdbgk;Rw|GbjjUrBE_@_`Utn
z-|L0WbeYff_xXIEJb8rHnrbBmk_}RdlfYry)=@x9DgHw9y{+||^V3s1)%T(rkQhj|
z3L)nDA58dPd*vnP#DxhqG8+sX8{+G4Pg!H9f5>UA`{t*o)^2-bHBCw}dQVF@@Z6E7
zosn>aLysMzzrUYQD8vgx$DGk{bFCC&wAy1-eLv`Sy9Pszb%wQTG4j?ssB)Q7vBcPS
zXBc_)Wg?*lS9UY^WMUvWI6pmg{*DAv$`9f#VXsn(iHjFdN|D{zU@NzUQi}1jXHZJf
z8jE<P6d&G|Kx^IY_j-wx7umahiJ07^e$PLBZCL?UW+sRcWzExu*1Gd9fPmeD_6!er
z7KyZksqsW`x?2ITRGHqANqTjLD^`|yg6187BV9fB-M?G*C&UW-x;t^A(1kSQ3jjD=
zK0Lu@{J{?N)oaA__XZLJ$>YEmj#J}5KHFrLej2V+T&mWKxwC>%<As_!L?DdzHc`e)
zzECFhXNryOX4)oGj?1yw;}zS^8d8dPBOaIARni>D#VM>o>1Lj7Uxu=)1c1x-<FxAV
z6}m8I)6B(UgqrGVR@2!x46SMJyRk%PGKsb<2zFA;mnm+VXbnZvB$vq`q=l~|2roXv
z&u7mOz1@M(_9r>Rd15J(k=wPkEG;b1{M2E5-Q5Vope`DvC((<mz8<9%m*=Ko{2Vv4
z+orAc`^M46)z6px!J~3E)z@T}==f}u?*1hIr_{<K*RC(%prW7fug=EZ#czz~o7TQ^
zJL$RA?q+16f#cgbc7MM@YrGv#jSqm5Ss=B%NIJdF>9H|B?Y$}jw)v2<82fJrtpUZ`
z`~Kj)k3ME#|9%cU`UrtQ0DzsH9e(@eSEeT?Ini~UxYs0?|93yL!|VZ03c;Y(v=wc~
z@|Wvvw=NYLjf$=J0yw0&@vtwuI~-mLdSxXp1WQ_T9(et4l)6#O&JK5@00000NkvXX
Hu0mjfeDA(V
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..068ca8f161b98e8c52fe5c44b048770e21cc956c
GIT binary patch
literal 1208
zc$@*a1V{UcP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11T{%SK~z|U?N?1~6;%}e&bfEqYhU|XjIC577)vB#Kol`3!~{cF
z;6f9LV&cYytlXIxcP`Y0VeL|3V`9>X7#1!tv5Bsf1QOE{!@>#?)HYc9=DpXMJ9E$H
z;<ZR=!So?z<4Gp>W@gTJzkAMi?vIef-88+cqXY1_<9zT~?NDEB@SWlMNT1j0zhY%Y
z8-HB=<%c3G-~aM(b{+tv+Z4R=S^r1-wjO%@@zH0XlBmK-!FkIpjhW4rnWb^w=Hm4}
z73tNUa;SFd$1jRYv*&i4c!O8Fion57Y7cJS_~dKbNB4Ly6#;;ffvtFjY58Yt#6M!A
z{JjWl+l{_XlH&O%UK|?x?!tQj-tLNkRPgHV#}3q;Bt~>1*qL<$85@$tISJNw0Ne`R
zVl-#a8K6rIc<;COR{H=@0U%hL!P@GjlJx4JN+Q1Q*Dv#PQjt3DuYP;_WIGh;$6XVk
zaZ{y|2x&?HnWeFum!9t@PtDy*Q>BIC^6b=^R;%^F$-_*$CIEp0paeCuCNpcu+<fZJ
zT|D#d$v5-QR|C}@0Rl#I5ryQ|u)wA>Ms-nF$oZ}9HWnhfjHzbU(9D_&rI=qyba#k=
zA-ddB&6v8}8V-cI6;*#H2#CN~YGw`Bc~UPTF3MUFAP`Zy+)|fY>T_#)DAaqd8n4?b
zAZe0Wirkur3{WUwYZL(iNJQk8BC`|(AtC@)Uj<$7h6IsYbD>8_CkAU)1tcQ^+t*%*
z0Jc^lBuT^4jjof1)#EKm!3)P^xSsUCB_jI)5DEi9F^~!)K!H%1Y`YOi0KjfT0|!4%
z_H5tq?1^1l_74rz2ZbPn3mK*%vOq)uLkXkdVs?575J9N0dji$o{tx%<czL)t8CWtc
z!qAM<NNuLm#u?<6E(0O~lC7=@tgEemB=OZ{KP;Bo_3e$;=Y}vldnIem==rTr?XJ7T
zVjyEytCdsZ<8hh8N(8R7E`8mcpF6y+HjIUgBBDUf76RJ{Y@^^jbW!Lcs7fE|egy0I
z5ROkAy)bk9(O;dEBNDZ!D#}W$Rcza}t6=Gh9tmM|bTo{OjV(DaTsxG$bhPh*d-?{x
z+Opy4hc}LFzE>bZ8VG|i!Wgl5`~m=4WV6-GrvJK}{XF&4)TM9kJJOsQxD22G8ALT0
zkqZ!n$c+e|E)SuSPfU!L%Lpvmfg^*Pd~f-j1x*;$GfKizJxx0Os2(PsQ8mm}X0zY=
zr}OFlSs_XaasWZVoRD0IKtZlVZj=zAd1CYV*|TTEO$h+N&Ye4xm?RY|P=Uq@s1*Sc
z0}~ZVKzfQekSYu7AVf^a2$9mrLLmi#0%8H?f+h$>PftEE{?F`hO5oZ@5$xT&*R|Vi
zAA<T);RN(5a8y%Log+br0iZcXHH!qIBuU{zD6=e!larHnvvIn<nEY3E*YAe^6Zji)
WVtyU@lRMe~0000<MNUMnLSTa4z$?!H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e43d9c2cb70be66ad1e1cb434a7d1ef1d33a15b4
GIT binary patch
literal 1979
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
N002ovPDHLkV1k10&D8(^
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2fb91eb720515a741178c8120eb37b1878a2948f
GIT binary patch
literal 609
zc$@)Y0-pVeP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10p3YOK~y-6jgn1ERZ$d%pSAYB9<-E1Eef(C!$Bb=Mm7n9K8Dxd
z5J=Ep5P}K{M@^btY7p5lkOoB%5ltPGO`Mn!7<b}VYPWOG-g`BW2IV=?9>441+3#9n
zW|X~pBb#tu@5PYL0S@>bOro-*BJW~MGrn{ha9(dsj@>+SY+!g(Rn3xNk_3Zx%vowK
zTzb7Q+f@l5>G;w9llgq{h(r>>Q6m$<kx4hhN3Nw;AD)g^0xVevYQaEGxQo*7hKN>>
zh$M@)vbp3`Wu+1zDj4PtyAdt6ktd(-v^F+3I#aTmnW=NyOlA+NzhH=wT(2DG<>Ir}
z>e|{2FbjMK^5@rE1wgfd2!{EZbkba1*$+INo61{%=c+p}1WRfXQJewovYh_g08)xL
z=MuZO@PB}MBkNRAgM^8pXsWW^1E@E$47kyEU|>6t1BQrNm4UA}vdg~a?#2*D&FBEE
zyJz3lh0|BN*W*`u-5~6qajAj#HFtYrWO97);3>TGAR--f^=w&_FX8<zK%^QFLpnQr
zXpCjvQp6m9U_U7MiQ-Z7gwS@to)rRk=XK%R`sedQeOFNZvyzws%gsgF?0lS?%C}1a
vp@`Ej<{#e=MI0?DDmt%kVo1|v!vMbk5>?B+DOpT100000NkvXXu0mjf6n6+$
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aea78cb332e8659a2df7948a8ad37f7a337f5f61
GIT binary patch
literal 1158
zc$@)-1bO?3P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11OrJ#K~z|U?N?1qTvZhQ&b{wvhGB3Jr_xa}vJk5QD-DHGt-`|S
z#${VE)s2a|v(a^pbz@wZv<r=PqYD!VE=-yjqcQ2&7)tFJBT<ZhbO6U<2M3xKnD_3x
z_qdo2%+I66h3P`h>b-N$cg}b3J^9{!#LT#rCT?l>Z35c_09XLf|H9~F4BojFz=c!K
zjM4GqqA!2%p^A@5Ph{VJc5dLM(LrN4y_Gsb(Cqp5M$TCP5N)zgJUQ6)5Ydf66W?7d
z0vH?0rJa_$;_nVVm~PEqzJkfA`4IqfZp3=~iG5vzQrx(ZHjK|Fe>n$WzXbq-fMi=U
zRA3-wIM@<|mX_#R<^8tisMprojIxT%ujlP(i$iGxYm+*GX4rD$<gLnsVTLva=ci^b
z2bxtFIKQwQt0`s-P^V+e3@Hec-{+QnrB|wB5yy({?MWx9#n0LR0?H3ClVASm?8$?#
zhSIMytr=X$pz`+HAH|=}o;bL_I`-(%k0<u_qz9`JH9PQcML95xdL=hEk@os{%?=1D
z(3wgcIr8Qghr_`6h2_|plZRT@3FyXV%;h2LY){;O_>Ir<)v?a@L{p&4M-)n6@v6cD
zU3c#YD;jkrfLu*M9kK(=j7v*v=-$<l03lHu1QwP`NZlT(C14mRE?<L7fM3!LtBN%_
zSPAiKV;X0GfhNa-@qPH(G+-hE_<Lz%HZ1^HTUAF-pP3F7B8EvlvZwP{N9vA5SUk)U
zF&m?wPW|dD^V()PLeT6wfp1QYe6?9(-;1NWz&N(m<`t8+T)gnk(_=TwvjE`0%j0hm
z(Sfjph$Ew}Bc1>1-eLiOB=PujPwnYl^%~C^09HJWlF|UP=pGnobEEe}aNqOma>m}3
zmfrsUWb?jPs)pLg-Mb%-dT|PVPNf1K9}iuE73QqBm@8phHl~fSET*(k#VE6pZE+WW
zE&5=uc&CQwgwc_RBg-J89XL7_EwSp!<y3EfzpnwMi2R;(+8e)4$N~Uu%$FaW&iVig
zFcZK8W&wb%`vkyb0_}lKyU||s_uQYCF3v9$0RY$XAm$FWTKM6^PrkN@hy(BHx6Gzh
z6L|nUZODgUPXhMz%#797*SDI@W(`$zxx0JVw&SIUQE<V=A;~USI0o#1*(HKafWsgg
zAe&*N07(V_0uyrpP+&lc7>WgaVT=!u&jg=gJP6?vuxe|)md$1Z0HFF?@$m4lxTKV9
zE|qK_a99YJShxgO1W0C<5G-IIn93h;B4TD{0T@H9iG>!-N=taq+H(NE6pyPPGns(v
z8a5Ev%*wr9r=g(?6$%BcB$Kq$^9TS6g#^3q94C`WWHK2BP~T_sy4(K++XS`={O<|;
Y1H_^2H+!#S3jhEB07*qoM6N<$f*Pe8@&Et;
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7e81d3e64a82e89c6aa5dcbb7c100d55467989f9
GIT binary patch
literal 1400
zc$@)v1&8{HP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS0000PbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$V3Q0skRA_<i
zSj}r(*A@SrbI+SM(o~Ya#-SMMRY;0sjDl;~s0+`s+frznY?@8dhNRGcrD>s*LcMVk
z3|)6=Z(3uDsiF7}Fc>dvf-T9T`MBq!3uz>e-e_iI6$ZilU>M##=bd|h_uTVwA4LRC
zGI-VtI4<S{W{o+4Sz}IM)|eBRH3R@wKfQHIisI#Q4E_5rpAZ1FKD||cT@;<e<N)xK
z&u$;P{15EOV4z5;_uG%ImjpWetr74DeErQohsGGNFF#pN1R5y^fUiDY2h-8!8a3Y@
z0T4hSw0k<WF#@ny%4iu8+FeEC5INJ)<{IFjy^3|Uz+#zDBt~Ger)^9#s1}FX2n5su
zg%B2NGI6e6cJ#7W^o9ro0z|;8&24=9k4HFeqpI#><>rCqLh#qWKR~;i57ny)<2S#&
zf$g4EWEBs11hP6r(u05f>7(m!vF`l^+V~wXcYuI)HxC8*K@5W4Mr=qWjhg@e?gu)-
zmQElzjedo|1g{@^!Xfz)H*1uBHHh6IiJ@w1N6FWtj=(6F56O24N@A>ie!EgT_7<6V
zNPkFnaNu=EapCL&e)sWDr^-Sez#m8Cd0?^!vN<-|8K3=P4G~d4Opl1L(ay+L-H;I;
z2t0YQJ+YhxcIv=;7nTmynHU2ec=oabVaB+c7TAf+Q7ST|1>pTL3wjf;yNV~zx5qDV
zQVdw&os|;J<r33200;MEk3cpn|8RTsQ8)-9;8#Ce#X>EOpKO8$A_C3j5`VsPAANnh
z>>&W~pTGV36{g+;;Kmo<J<8@+h>zaOR6syqeQX^VhZEmUpLhaqbsr!Cip1#X?7!+&
z?gP`l_`0Kbw%Oi${_)z{*@hX((#1O7{dq<I%9Zu=DRqLGgFgIyMSk__)y40Zmi+A2
zmOXs<&>~{0s2;ix0Kk8rY)nNU0z<jGFl)LCtF`Nc+%%NiYdG&D0p-}2?<-`HGp9GQ
zXDjvEwQIJzx@tL}(&gozZEkMb<HwJ4jQEgSsRNfUu1rN>fI+5Y$T=0~nt44aC?atA
z;>v#BW<3w%P;pDU?|ty2<$bx?DP`4E6YB=li$XnZX}9ajr%&s9>+9NTwK4#`d-v|%
zP3W!az$g%5nIcJeUWgz*Xp17w1(6|Gfol6fC>DXfnsSZ^jgoTNiDYG@$eAgEpQ_S|
zDz{oK3`o$xE3H;bdc9up!o4V&CACSY5e0Wi`V<9IUx-Q}^a~;q1quR$h=h!U2;$iJ
z2TUTEBZ7Cy1yNW8TL79OGy)naG=RJ_CK}P#Ky8me(Fyf3)PbxKszkZTobTVi-y6gT
zy?LyNh%a5bBminf(Ug?7q{}RcS(r$2pJay!i7_Wu5@t@$me?pcJEutO?2HJC-N+&!
zKon#Y&Tj1Np2FCZxx0CC+aVR2M9d@9Bh=ir?ylNsXsy%fEiEne-#k7Q0>ejQhfKX*
zmkkk-h@#e&l#5;}L{jSalZqraVG(0DV{u^@r--14f)3aVq8zLo%Ichwt0w29E?St?
z%u-+6EYupI%A9{#6!~7Wnd8o#>Roadqdyq{*mY5V_cvGs0ic^VZ}QVKXVS{^=P7HO
zx(iGE12gV73eNpLH{2=bHv7T?aVNzfeRhkQ7rFF~bUcYf+1>I++3?Nn4QsA6{oaFn
zK5hD(=z)`h6W>bA3CtRE0<*@Pz^pMRFl)>S%o-=2!2bZ=$;^6?!gV|V0000<MNUMn
GLSTZe>6aG(
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..14db36c9e9a08c57d9cfd61f67f52b0f355dc6fc
GIT binary patch
literal 482
zc$@*^0UiE{P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10bfZ(K~y-6?UO%iQ(+XwfA@XQ&5cSwhEt`>1qX?N4lWY12xe%(
z50Lf_84N;4MG&muABs+b4hiC5t5b(UT0$UH#6N=wPHuHdqW0eV-g_LXG0`!b^i1dB
zJio&^9FC`|%o1iM`u}L)mFlhQiOa6$x%vRccxgfGt=;>zweo6vJx;TF;M)hCd$q>-
zmG<o<&7xdY04)ZxC2{JS%au^(P6YrAzs3I3m-|g%?J#lCr3(x8`S#lgXvAq2U8#n0
z@<f3w%e{xsdR0+H;tZa&x|5R$fGXCAk1F;^t9(zD$1l2Ez8L;79t>g@OJ~OP&ffcR
zelUoqcK+@C@^u7|%ilox-24=f<@%5AbUy$%Yt4oL?reBkia`N@!#DwOzx-}E`XLiq
zlhk<t{YOhafLLp8^k09vrb+?8^GK{UH;;<u&YO3iBeCW#fVF0`*Z)|t*1Q^@@%R_`
Y35%YNveHF5JOBUy07*qoM6N<$f~|JeqyPW_
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..aefe383c32c0cdd7ab2a1a3746a8feb62dfbf0a5
GIT binary patch
literal 1438
zc$@*A1!4M$P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H11sh33K~z|U?Uq|iR96&+|F!p-JHr4D12|mNpe+!TQW9kvEND#{
zm9){Qq_r2DG;MtBC27;7l!qow`qZSaw)I5?Vzr=6t!>IJG+q#BqE@GXj9k2MQx42w
zX3k!H5Ue)bOxw^0SF)3n{Cn;H+iRbly@;8ylp&VX{V~8}fd2!41^|bN-qL{W0A}ta
z&-P6KGr$T6?qUA$UjrcEQg$Hl+S>g55GE#KikX;*rnPBz67YB|7cX4!UukWv1%M+&
z+Z5m?Kq){Gpm-WG2K?|kvvG)M2LS7XrV23jG9SMWP{G_>A0IE*=Hz(f)RZBIha+fc
z7=e^zZr+>>kH-Q4#@Lv%=iE8Hg1Pz#QAX;@m7izl=HA6UKw@SvfD0`xzRo*$>Hr`q
zA>qrX3JTI@%=>$LW1*g&F97@n0074L_^00;IItf?iHTWRsU=&t4r+~!!+#JJv{hGU
z*nraj^ce6i?rrJq{KCTUvQww}pz9`<FSjBoNsH#?B`RINRLQIWz+tzCQ(`e-Yz$Gq
zALj=Lg9*R~4;=vj>|(A1P&ZxLK(lEc+*n*3_r$ep1Myq7Or2?LOpHb%FYIBy4FFMK
z`)_S+3F}Hrok?9?LtQB;%dUq)n$gr`H%;^7nRS_&5sd<FH`;^2p>e}_c^h+VMxXT-
zR4}&=UBAAs`SN9NEG;c1t)nBdWz(iKm&emmOZ0RVk+2KVvC{94CFwf#`F#G4hK65n
zcX#JJKQNHFi}{;}0Bkng*0ktgcXxFKbNfSP%sl6)1xgyy(?hY6l0mlHuSLtsZZu_N
zgpO+3xq;Hs8@z5^-^iv-w~k49`V&CRw#Lt1Z!o%ZC!ch=uGRq7zw7e?Ff(d^XPeT~
z`_1BForSo=1qHfZS~|%Y8RL3c*<`)V)?NcR=F0!c>%Dq5JA3#ruzoguL4fH>ls5bQ
zH_Y|xnTeRC<jBU2eA4aissWPc%RMUP;4$F9T>7E_?n7i|-sHSI=KOsAB_*ZrAh2ek
zyu-lvUjz1k48Y8&)3oy(2rzHh!1bDTb}=~z0snmZBfSL-5FW9EdX>3<KK)T2BU<dl
zuZY}>nWxPsRuPF@V7~&Q3NUO^dS)tM0<J?u&oN+Oz_J&p2Q$|aB|Gi*6Hl&Mwc>=s
z(RJ4_w!OqWI_Hk&Yf29h735}TH)Z&IZW91B4Zi+<KuYxad?sQs7DS?Fa4>v)a`KfQ
zGczx}*V*|_d2#WZ384^;WM-;{mX^<UnC3@wdCYkPMMXtU*0enitJNJPf+7N&CT^yt
z;-=RND<G{Fi>7IsSQZ!ON;QlMW|3n^xk5@w7#)R0N)eVayRfh@IS>dq7F~g&q9SM1
zW{Z3A%9UqqvDlg@k<%2yX_B;=LO5drc17e+fE6GqnAMQoG0^GrUR*VH*S2qT`2E#c
zS<YZ@ul}ve^+uc5`@68&#$C+gt*x!$1p!vC-fHuBZn;g1CC-eJ8_J9mg50KLmsAu7
zuu}m}Az)<%Ndl%)hzMX3L=zS^jpF|P^fSq6ZHCo8Dm0~Al^P!z8PS8m;M9Tu08mv`
zC2DJHop3ti1mGlQryz1DB0HF^FkvB$?lm+fSTUQBh>{XhB-E5*4l~gtO<8n{WlC>r
zYYX!%X7m1p5614@yJdTOyXNtDq;9uMhs7eTlamqv!d9!A2#1x!FwFS)cry}-#LCOd
s&C1G3wa~hY2KcXH$-Cmm080+=Cz@=8&UF&x>;M1&07*qoM6N<$g0XR;L;wH)
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f454f26d3c720fba9de9eecb362491460394c093
GIT binary patch
literal 2439
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
FV1ijzptJx0
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4cff5da7fc2c1802f64cd36c5713cb4aa9aa1d52
GIT binary patch
literal 531
zc$@(f0_^>XP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10gy>VK~y-6)swMHTTv9of9K`pB{3){8Qfakq=?Xt75p0n!QxvA
z4&B7RKy<WF2wgh4<$<NOgbrN<aSFDBgOx%HLZ=d;r6@Jem%QAsLz<ANo$S&JXS(0_
zyXTybYm&Il@owe*7XYi6HO<TeOp?(V$t;ukwUnmAH<=={?%auwlwDk3$IQSC16oPK
zo6XH^)B(5q&7ov~reOOsjQIdBH#Qu=!?`){&g3M!)v9ytcF!0tFLz$v+UkM6!Hk2a
zK2VTz0QcV4YPGRA4(^VQ+NU_)X*L><OQlllXn#NR@#Lg`Upj{g;H~w?xE%y5!@1nE
z*^v?dUA->noQ)R>{Djjaj;Dbiq2wa7)Q5vbX%<NXwNotaeFy>xbnJP0mCt{#z__H9
zuBHO53Otc?J;wOrV*X3B3BZx$lFQ2np;QN+cQqco0IC4~U*hT0@-;F8$md`!h1D#S
z7o=0@WIq51ueJn4ARx%V*?kx~gvKMOIMBhL%!zIQ02WH=YqRnptol&yUHt!_={Lab
Vw_KXdlxF|{002ovPDHLkV1iT4@tFVs
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2e772cd0fa3a3f29e2d5c20d9fe2005b2a98ec84
GIT binary patch
literal 982
zc$@*&11bE8P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm000R(000R(0q|s!N&o-=8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H115-&vK~z|U?Uzw&V?`9l|7T`yZj#<^SER11b*);LT?z^sq-7t(
z2kDb8_)$dh(d0!1?YHp3CqY@*jRipvM5wSY71?#y1+jFg(m+C!n|tT{eMmyGX?l}e
zyY$8LGI!2o&iQfX%$XA*iL(@Qrr!St0N}C~SFV4twe<A)t1`+dGg=-=t%v)K`Cq?&
ze<3%3u@YUmy!`B8CxtZvW8~;40ug~%LRH~OsIosNtTj+g_m1<C2><|Ts%XavoHcOP
zz*>Pb2DAc816V)^s47w=ydN1oQE=I}Y%0J&2!J3+>3tI*3Dw@J_U9ZKdpojaDu8na
z#n8b@FXYAuO#fSCm=FTMi1Z>N2C4U$rNm?csAuc9I}iSn@yjwL5kqIoOV3?=qM1&I
z$OQQPn-AX3-ac7Yu5W(7bm`(-gJU=`z<-g@S)7|Iz}f6l^H=~xxwZA<?IQYzrJk*0
zf1CF)T7LJF*BrvnA(JzK)bH+n`{8G^+RGgQN#)WTufOnSIg0G~S{NAI`r&o};PC+f
zfQX>ciu;qklE6Y#$ZhLH00a;gjs#$8!krqxo%_3uXs*;5*Q=_4+RkGuGYOa9`E*@q
zo*&iyapR+}@;I0#nGpzFVYBkeOY0;dBDi;d_W;1D0%RVV2qY*Jv3t<PVInA%!}v6v
z12g47?``)=6a!bf{NCnId7Y?d>$tK$6@UO#iGyYbON&n~tUq&MZC1x5PzVg}-hFWL
zh6Dt>5+w2G!zM%oA^-#vis7Ii81xRn`6$dZpAEpC2a@mvD1Zou5EEXyQRl<PM2>yH
zCnjO7Rx>ZJt(_C-BY?_bK6pRu`*cj_eNQ*I;Uvwg*RDNPsZ`1{MW9}<hvl{{wn>w8
zJ9zQJk$p3Z0QhIG8~WH3St=!!N+sFe-cB+BHa0fmFK^xq(BAv_m!JP$0W^gA&@c@Z
zK7{(v0*+8ezyPF(C?P3e62Qh3=?a35njnUCow-muK|78|odZ)Uq10+-y<QK!_vNN@
zQPAxc)!Hy13qBQRj94{l0KlkGWs(9x0!h08*^ZrSC5^^m6h)nJ$1?#;+#n*=YE^c2
zc4U8lUz*LP%+JqradDBWtE;S5t7HzNxdBdF&iudOzxn#8bj!7drvLx|07*qoM6N<$
Ef*dfv;s5{u
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..83bb3e20a5eeac78c7c58d7f2caee0efd5d797cf
GIT binary patch
literal 1244
zc$@*;1S9*2P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00004b3#c}2nYxW
zd<bNS0000PbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$UZb?KzRA_<i
zSWRyuMG$?}-SZJA;3yCTy8;m*PJ~0S5J(6qfRG|>EKd0^xh1~s{+!6W(!wd%h@hOg
zum?U?BD>PA;>4cubQOo5Nyb@!&1AgEioD1gXWV7K*VR>1RU{&KlcBDgz*TW8;JR@u
z;JRUoEMB>HUlh@-xD0?r`cEEh`;*oc5}=6i)5ceredZPHJwBLfrwR!G01@EN;}a+%
zXhqPPph!V0f>Q1t5ulZVQUpZ=r2uAtMZheu%n$)AXa5UW7}mP?ci)|#n$MMEz<ER5
zpSahh6<~JPLA!K4#MzhhYGDsdg20IqNr@{$MxHqnd09?*loB8UfbwK<PAdD1MWBFm
z_cJ>Ir&~Q>m$QE@0tS&D0wD;w-DLq32n<0!60_as-0^Y5-7zYI!UBkZkKTK$)Q=5=
zKycPeaB>!ph@tT)B!ES*_xPaD4@`pRX>5G|1y0V&9iu`5o;=#F{3*7wdA|!FbjPrG
zHo7sTgo_Ex_6W@iBEX$@7V>wdw!L-%1SAiC`Sq3i(}n}R=`CfY9$2~e;5k9wo@z0n
z_s7HSE9c{Cj}S?1^T#iZRugiA0DC_lgjM`x<uRZX;jiNk(ux8AKt$)+MF4!byfDhV
zFlG|OmK|Bjnx9;pRULEHSEF)4GP~wIP&H=afsfy>Pgqf%m`VkV%IU*URZH;ydJc@5
zO0dXG3cYDiYAV4wuPLI+OY9;j90M$Z-+uqswYo%D`*e8*w5CU?Am+63r3$l2S(I$*
z1q^`1HSJ;O;gih=m8zLGuF83U1zEZC^mzwAe7lB8<xde5iL26M6=neu;qPZ1{PU~>
z5W$6o+q5iM4NN6+_U`JsFr0T|?%vm*eK0kb(lJ0OITA-Yiw6;LV#XY(jCA%sBmP=j
z%50<v5Cn2gI1`hvMhEP2_W24G>3pc@b9JHsBBJ&6_29(|gt)u$iU>)ER~LCn#_s;P
zZH{#IU6--8_TA#*B6|D#`;m-r&DhXuwOXptXv`f)QH|(jZ6uj=G?-1?IDHKpA6|Sm
zxMmoLUe=DIsMcsS=31@RP_AP=&~CSNrxWTR5EFaz25=eTo6qlzGrKafawS&tMxV0j
zM4@iC+j?hbhcB-kE1=nI+IG8bd%mCez0>4$29vo_U=jFyn#A*AvfxFw*=*Wj>n2vC
z`4~uoZeU{_`d$*S)q&AA=!^D+IWQtV3_J^X#=<a>7GkZ^SY|*-lvN@&(MUAVM}mGr
z6q8bsM>bBZj+C}h+&7W-ZO=q=(WDqCR8Ft1uKG!m1oe8|x7PY+LEr~x)=v}}c;cyq
zj8ay!Raz<1B0{2t0DvqB5ec(crP(rT%SICPsc%@4sHWpu6vbNWxYz6TJkN^{4-fm3
zIF;@Ph={hfw$#zlk*U|~y3+}@zf8vOc6DTo_TpIgjnTpZk%~mehGP@6*AHwMCN_?1
zw%dJbmzI{2IF6HMvuSsCcV*O0S1#bD;KmGh%i>nRb>ly(A)d%%;lSGf0000<MNUMn
GLSTZF15GCY
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fcc40a821e939fecf00c14c13c2b0beb00859d30
GIT binary patch
literal 537
zc$@(l0_OdRP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm000fw000fw0YWI7cmMzZ8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10hUQbK~y-6m6E+~(@+?OpVvKcP*o6OLFz=yLIxHDRbl82v{w*T
zgv1U?rXrLMjbMa<3!qn!-U7u{Gba-sJ0URu!alA)hWa>ln=0a!j*dR-^>e;InHlRl
z!%t@R3J{A`AiYaRy*&U2U}i5iA9obTZsFfq=3O$L?gBFa5VzZopTBa>N~_Hhby8-A
zB<|dd0b0Qm0HrUA==MrnnL{Pk0Oh{Cl98(%@4qIK*WuxLw}fpxdZ4TnfDeEOARYDk
zz;bnN0PQMG2Sn*%Uxo(Bc<R5MOiHAWb(v<fnuFGNhF{FAJL`oGzK?p(uNW`%pdmBs
zKHcchat>b<934-(z+6By@8kbyZU&MLs#ojyI)JK8{A^|~fgEWs9rXrl+xy~t0+$cz
zVLxvG*0%Tk=97-YjAT4DGn$KV`IbIZldDT`am(>1J7eqFL!A%C2rERr6T%msqvOdN
zpaB5j^v7=uh$I^0tzx$naqsR5Txfm(_$>FW`>VIE>s75R^8kOF0BMk%Oy2@a3kgsn
b4MXq`{;HpdCu`$N00000NkvXXu0mjf((K=#
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fa3797c021360ac9586e0921c12d873bbddec482
GIT binary patch
literal 122368
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%0D&o+zqgybDCZ0G<n%~wJ<
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
hYG=E6N|WPyUw_}JV-Iz8SC{3>
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
KvLyX~F#IoU)jsV2
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/Makefile.in
@@ -0,0 +1,61 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Branding Makefile for nightlies/unofficial branding
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
+
+export::
+ $(NSINSTALL) -D $(DIST)/branding
+ifeq ($(OS_ARCH),WINNT)
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/instantbird.ico
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/app.ico
+ cp $(srcdir)/branding.nsi $(DIST)/branding/branding.nsi
+ cp $(srcdir)/wizHeader.bmp $(DIST)/branding/wizHeader.bmp
+ cp $(srcdir)/wizHeaderRTL.bmp $(DIST)/branding/wizHeaderRTL.bmp
+ cp $(srcdir)/wizWatermark.bmp $(DIST)/branding/wizWatermark.bmp
+endif
+ifdef MOZ_SPLASHSCREEN
+ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
+ cp $(srcdir)/splash.bmp $(DIST)/branding/splash.bmp
+endif
+endif
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+ cp $(srcdir)/instantbird.icns $(DIST)/branding/instantbird.icns
+ cp $(srcdir)/dsstore $(DIST)/branding/dsstore
+ cp $(srcdir)/background.png $(DIST)/branding/background.png
+ cp $(srcdir)/disk.icns $(DIST)/branding/disk.icns
+# cp $(srcdir)/license.r $(DIST)/branding/license.r
+endif
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ cp $(srcdir)/mozicon128.png $(DIST)/branding/mozicon128.png
+ cp $(srcdir)/mozicon16.xpm $(DIST)/branding/mozicon16.xpm
+ cp $(srcdir)/mozicon50.xpm $(DIST)/branding/mozicon50.xpm
+ cp $(srcdir)/default16.png $(DIST)/branding/default16.png
+endif
+
+# Now sort out the branding specific icons
+ifeq ($(OS_ARCH),WINNT)
+ cp $(srcdir)/windows/blistWindow.ico $(DIST)/branding/blistWindow.ico
+ cp $(srcdir)/windows/convWindow.ico $(DIST)/branding/convWindow.ico
+ cp $(srcdir)/windows/default.ico $(DIST)/branding/default.ico
+endif
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ cp $(srcdir)/gtk/blistWindow.png $(DIST)/branding/blistWindow.png
+ cp $(srcdir)/gtk/blistWindow16.png $(DIST)/branding/blistWindow16.png
+ cp $(srcdir)/gtk/blistWindow48.png $(DIST)/branding/blistWindow48.png
+ cp $(srcdir)/gtk/convWindow.png $(DIST)/branding/convWindow.png
+ cp $(srcdir)/gtk/convWindow16.png $(DIST)/branding/convWindow16.png
+ cp $(srcdir)/gtk/convWindow48.png $(DIST)/branding/convWindow48.png
+ cp $(srcdir)/gtk/default.png $(DIST)/branding/default.png
+ cp $(srcdir)/gtk/default16.png $(DIST)/branding/default16.png
+ cp $(srcdir)/gtk/default48.png $(DIST)/branding/default48.png
+endif
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0b96d92ee355c1e3024125aa2d1ce2887e322557
GIT binary patch
literal 37616
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%0A&X?Z2cBvtlwn2}%_!nw1O-Dr!;{rSF-
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
new file mode 100755
--- /dev/null
+++ b/other-licenses/branding/instantbird/branding.nsi
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# NSIS defines for release builds.
+
+# BrandFullNameInternal is used for some registry and file system values that
+# should not contain release that may be in the BrandFullName (e.g. Beta 1, etc.)
+!define BrandFullNameInternal "Instantbird"
+!define CompanyName "Instantbird"
+!define URLInfoAbout "http://www.instantbird.com/"
+!define URLUpdateInfo "http://www.instantbird.com/"
+
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/configure.sh
@@ -0,0 +1,5 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+MOZ_APP_DISPLAYNAME=Instantbird
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..a780410e0cbbac4cd8ec93416844f02d9bb87ef1
GIT binary patch
literal 18336
zc$_qv19V*9_x8iawr#tyt;V(*+Y>fPV_Os3w(SOuZQJ^%-{1Sr+~JzF?sLyRXFs2P
zW{3SykVJsRg#`ftL6DXbQw9M675aMb1O4smc@DhI_Ui@0SwvbD`s)UOHVysy4C5fB
z<^1*g#eWY_5$X(&uP<?2#5G-1?9E-=jhxIt+}+(7E$ytGO^h7O810=bGA{UVK|qK>
zq{W0)Ju=U-+yS~8Sr6TZ8<y#D>})6T45RCgVJ5|~3Uau)6a^pwGyQ$a$v&PbNECR)
z?etfuU=VJ{LFr&Lu`=N*QX*w@`0nH4O{Vu%e-c-xUWc=sie=pJq0fA7xc_z*uk(&s
z5b}3BO`(i-`X#nFY#Sri{J57yacV0OuSE=;7pB&f!P}xaA=~@jmkuFR#vla-@@D3q
zN$`#f9nfqmfHb&x>u@F(M2Z}4Xr#FfSN;Y~g8U^w7#ie)fW6gurjLAm>*(&qD+z_*
zVTeK+28)AEccuUY>@|X^76Q<^n#Tn>`|Pj0IPq6Mk6|@70K)Q9^Q6|puQA#{iXDc(
zZHoyesgefLw8~(EWB){06+0gcX!EBOm3R)EFU=qi4vUdil*OGSmGMOY&Khh+*k3h|
zID8ZdByA!(sSmE_s$p~rlmLW7J7x#zNB-b#2nW;+QK}OCFPc&LPRiBdN&uMCRxJzN
zxYniRt%F^s5az_)Q_w`5!G%gvS9TO*ICS-Zx3rO<j=w<<k-2J!T(GaGp;rA73n+e(
zDI3L`r}BPBXm50j$Sm0O8E_;R4ogHKH`SZ^-Uo#>x$BBp+%^q|K4_km?5rz!kEz`}
zR+$taFz<lw&-v-FAypmkT?FwhA>R9&Ty{n*XUYU9QD(7|L{@!$Wk8X9i`f%2UO?dn
zjS3aPBWlx8xO^xghKA!tp1|*+P^M|>J97RB?7+qaO2Q!4!(K++H~V1Yj-YpOx<o&k
z9uOf^TD$2!%VJL<*ro>x?5tXlt9cGHZ?`8X&8<s|?u~CfxA~L^puH`OM+#D2XqG#?
z5T})+RIzD`?pK48qL?i8eb(K{KjIG&vpR+mG8`Cau0p#b6fgP)Hxc`AC2J{VxU^v;
zhYf@66QF*8z!gX<r*zC@K?s#r2}6|Kcy*I>#2G~Cf(Z2m@p{PzkqXh+o=k=4e3MUx
zz&L=+p&(|a|6U@UotmgcilNLiv4v`CklO|T-pP|Fswo4KzMn&fFB}$OEJ7Xi4cZ_(
z<#epXBR-P@lGM_!0_Q<S;nvZ9Qsz*X#D(NljhDAs-bXPTvQH^MI};alI*x7xsqy%;
zobn-}qSZ|hOaCQwe~1fyula>GRXWapQw<XHt}*%*s(s>$j~iRd+eOMm*4`L;K7R?_
zdhBck5YTxC{t_!CMVjrtw%^aoGZd*5q+@PW(UHeqBV|=$c#!9iU0tLS3DFTwR#(WQ
zEO?-d3#Aj-8lY_sN-$28Sr5tzpypj#GS32OReir>9VIN}%HF?`(Fn@83eOA(v!8E(
zGFEtp>QHTXc!Zarvm~9c>3Fwthp)h@8WuuFv1L){Xax4q#%*Q#QBAepK(#^~^@&4L
zAM}n91SxB8CuY(Mky3<F$m5oy-Jy=AO_+uL)N|k!mEeyVR2;F-hI1saRMV)d>={n6
zAh3Xz-&@3r*P*nicKA4ZC!uZUenl>{25bM4+VrfGElo}f7WV-rOX~|13k{IwJvn`Z
z)h5Gz_ZpSHC43&bLW9>rIGe}J6=F>HZV3oqPBa>Qrh9(MT$d3agG<uyZKNk2a58sP
z(t}L;K1>`@4x-mm0%7fhNwI&oiQ`6G054ID(1i4&rCChYA+R!U^sSLP`Ns&V9O3nn
zAY{C3zTXa(3DzI$rX-k#L=tMMFtd?T^wvVPOd(8iF}C&?rpx8yL+ArTFcmr9;DMy#
z57;4|*y~SE2<-ilrU86A(grvzGZK`Ec=BRZVM=icN};E5H=kpn%z$HJ0#|81LM8$D
z^!MF6>-&0N1Rs$@vis)i;Zo<NL~W%LHKa{)#$srT+w1+bu0nt>Mrcjqs7}eZh|mf{
zInY)H7)@PVj#T#TFw3NMnBe>}_ybQ0(YCE;%cO!d!Qu?)^FDEIsVuED>C!Q?USvsB
zhGkoTgvn-TNMayKegNm$TW?bjv#1vYnyWg^4#u}j_)S?AK;-WoDwEtqs_HX~k{SIX
zd8sgZ)$l?9KuRYHGv4seP9!Vqgfw8vUn-a8?96~f%1JKiT)#wZyQ3xyK4Y0X8H!x?
z4U-GOa|Yk^gi_=yiimyboiVC&&pvIHAhp!{P-`10HG@$nxtmtGN$b!()!6iK_jNu+
zbJ@`V_jG@N2uh8>9X;KfcdNG-zjstL>t)iZ!TgUYRk!ro{ew}qd^RSU@USptG0g)4
z**GA5$+$}7^FS(#pPCZ0q}RrTZ3Nce5V`EEsa6JEqMUzgD5}*nRE%Q;MhAJ6rT}%+
zno};Kv;Tp|u&^w>VBbs?Zf>jIJtWMlNDCR;(64Uc_+`8^<d+HS!ellIV|9Dd<fs`R
zvS1VoU0;Q74|hfzg{mPTck<0Mw|>oxZY8;3geuYgXmx>BX8!?Bu-V6~UjwUXOli}S
zKt6Mp!lp}p52J2kK#wsaJav+kmn3!%J`_bfSCs|1xJZ3>Y91{_Pgfcy=?1pG9P$h%
zHi_Lc&fn7;=|W=Scwgg(m!lp=bq&{A$<wXnJr<iqtkojN4LEbbA7L*O&a;cbv@@0)
z>UYl=HE!82<;37{Vbe+)bmWJBaXl#DaRV!*gN6D1BH5ljC1se6h4hT{Tl4+q!Bd)X
z_;`x0;@i=uf+JvS;19?_gOL(JG^KkQ$cDqu;S!bWys6VJ4xkpmQQ2k9>^qXoayKeU
zwDHf#aNv;Z1CxLnBOJ<g1MNVHuJ?fot8CfI18!T6U32X)ObH*j$t5|qJro0dF%L!o
zL5q#e+#E3>F{!6wuPCXN$yP8;BG%)%?b_6_hahEk1sM;PA}94FvE&<~BD#(qEmuq$
z*%l>3EXFaDi%kR?E0lt;DO|;j-awDB9E%A~KXKwjE^~6TjNbdM<GVTXaZ#ux!b@_y
z<qWd#Y%*dn@w9+JD~h3)GK=r|Ct7ZJSvGQ&M(wpNfS!U(*a_`fM3okFm}IZ8zK-sA
zOO84*y$g%tMba`%XOjqxo2k&=kDR`02~|GRS^cx<Ffh0lRZRJBl(TC7Um^UZY8}zt
zv7a*^$N@H6=kwbMHW7NAj7AO)8Ekv{>?z(PZ=LNHy3D&&**5+T_SZsg=b1tSn|aW!
zk6j-nSzK2BTRRMi*2%efX>~>_hH>*ouR!@PpCN!m<<Bs~5N8LRf6}IsA5$!u#EjI0
zxAI0!lJr61t8U>&Nr8LkO252^)tacz9xWfn!rx8?xRu-mg}#PKG^hrlNO_zC_O<NT
zP)d7J%LKbFg#VXYTf`M)4)rz;d}$s3-_i7yPLH6hrd*KmK&T^WPUj!?w9hT^ZyH5a
z+G$3We!SMph(dDe_0y@t0`<Rq{sKZKLQn;|)}AV8bkX;|2X%Bi0ed}niCcqc!ZT*Y
zXvybG;~(eoh;32jq?6uZf|JzL?RNOoEH}SPFI4-_d;^wl<+^O|_;DpZ@k3kN*kx7X
z1pUeAl-Io1{Zxge5iYHiga~YMLhYjzB|$#6E$!R*PG{Ywl=(*owBIYyXVg<F*FUiG
zb5_N4p)|ohXjcUNZ&C|ZAdZ%J^YWBHewKcDFp8F<$O{eMp(v(+B0693Y&&|ce*tXO
zd(Zwo4+9~U<9-#}y4lMR7(5!EOdF%T3+t*N5Tr1OfdzSGMk3|Q1gOC&uBrQ$1e>Rn
zNh|D_RX`#qr7k?UgY0NZ?rk}bX=J3q(7{f8ROk`z^Uz~Q8gTOHmZPJYWC0J;F2Ca;
zGy+m#FX1Kuplqxop%`WZWfq!$S&SE0<OodEAyi5z4zl+>lYY=@lH~T1J)7nS#8)}9
z@5d2+4`UdPj=vdr9!cGLmL8N3a@)=$oySb21BC_61N|Nfq3jhtc#p|Dgy-y2w>$~i
zR1~CCiJ1k7kHO<V92caQKjk1-5@A;vr9`H^Rh=Kn%e*-+KrRIx_ML=7q1cN#hL{0;
zsDinFp6yEujdkcKF^k9mG-|>Ec?F0vcMueBmRs~RXC7P|D(pD8xlv?+N6T%V$QGGs
zJRBJEb*dfmKyZXi?1m?_?St>~hZRB~axx)Vt~73WLS)*ve9tV_PiR)7D0mI|V-ik9
zCS$XE-#3}5#}ebZflbk0Jfi}(gt%Qdy|Fe)zaZe+xi9Ovf7dtDX|hxAvNP+u!HKDq
z447iDsfSvMOpGAUL4;{748Y{bGKHwl1S9ErF$aY+^1F3j<>=6UBa~BBR>nlp&3&m?
zF(l{YmknZ93JwVj2@jD$MZyiAQ8GhSE6`Lf%pXG+A@c3z2>7yf5DGUsQw84)@E{DT
zq^02v5?&BvkH8N0T5Nf*+lftObBCeJ0~I-S)k~@Zawo>#J4KZee5poOn*uJS)N-bp
z8pS`UtV(Mgr&=%gG*UG|BJCQvqZ!XCBq%uGOSuK&pweS~VIxRlyw&T}HE>w<LN5no
z%Djhbo2bG=<^UluWDhk>WwxHC(Pz{BR5qUhqi+@kDR!kcY5F5|KaiBF3ACo5S=7?$
z@9t-}(hPwc3d%3k#<|M0HG99E;j`3WL_Sb?C4IhC2f@P?q>?hgTkhF@KZyL65}uF0
zLw42@ud}w33@e^Bo!i6A@DQm=QV1e045s9l`ImNh)Cn=Bi_PlTrm3KB$^+_`w$JF{
zJT+Sd%$aF!GZrup%dee|XJTxAGPynlp*%U4K<fvs5uy)T@`zufjPsQ6J2$VCF60-=
zR{RV8Ht2-bE0|{TV6QY}KlBVf2Wx#zj#nxSzgXYh>RNb?D)WGPs9Q#2pih{3d~(WE
zk5GVA{V=EJ(9f$#HdA(o8JoV?;NR33B|XZ*38G4Yo|iC#2^bH&_)9jJTm&Mm13}`T
zv3;0YdDY+-%HOdV&4Y>fvJB6%RP5&(QWet48?A83RH!Y%l!HtyZ3Q!id2L;fh`aj?
zrHtP41Q&WDF-(=Vh}EoUA8T9$A*CbSQzfRc!Og+ny~rr7JXM|?q>*Wnjf{4;i4BHu
zP+wes-t!m`f4YWWI`2`*x{vsv``DD@K{#$3V?ytO7#{>^y-L&I;6^weM!2mtS1$MO
zw6PEqoPoTcDm_fHC%}a)i9@fFC1I$^@JLUhkSjq<+#<0}3kHn<qJpV+h`^J4JHtro
z2}R4EA@=u5lmTk<`XTeQj_aAwj))3;mVO6n!f*yS0#m@E2EQK%2qSuJurt9C+(KR}
zD5M~)TD3q+?a1M%vv(m<5j|S*d7|mEvZgXemvK>hQfJ~ec^Tzor2rf=%5w}P{!&Vb
zDCP+8PSx`3ct=De%JU8115YR%mOS`W1aedVys3KH-aElU(t$#BBcs*rm7Zv$<REaG
z-gu$7A-a}oWPBPESU3~F?|&4W3NE%IEoLP<D3ES+wX?y(NstOEE?ipGe_E@#xD=tm
zQcsI)=w6Z3tJ+WpJ5lw59Q~3>YI7YmdqE^NI7XxamY|LRE&+~aZtE7k_M7fLKz3nL
zn3<reC_Omrgg<^tNSF$y4x$}nkY5Hh#|7gH#hioh7&DSU3MtYQQa$)!-N1f}abdJk
z;%aJfr5@_&=<<g$@<$$XXsM|efRUv5fN@)f3dvy4;9|4&)87%1pQO3LQ~Ng8u*xq9
z%Fo`g8L~4QFPNBfDl!y9(3DIEsnVfrmy?thn5sg_!eT<0+Ep)U<>4odAPHfkwf{G{
z@kxs8Bs6!;R(G$-A8m0(Jl-QGutSA740$gxB_)2ArjMxvV8ZH9@usqhVyNX*K8Y!H
zj;ukKJSx=nZ2nd(kiP<pmKj3$IE-Mr`IxTEv-CxlrHxEilBl3oF?VIWE#8A-()hH3
zEy?S^1hG;*y3={W*TGL`br(9;T_Bp3|K+&7GlQ%Nemy+KsUu~aKKNDwtSxA8euE%}
ze5E{v@kWE-_e%bbPEOa?X_I|KZU;$?gEB?j`5Wl$tO^s_kl-)@&1U&`<^Zo~nJtjY
z784x1ZLksOlRc>z!@PucSY`keDfug#Z;>c5Bqhy6rcOX6kyvntg{IH#2V@()2#qze
zoOSN%Zvb7D4>kvqm-M7EUcpLdbc-dnfISC%RScNT_{woz`Df>svO+Rpi8(m&{?ie8
zOOy_67_zW#@|-3lnfX`H32NKfcPj>Icw}>LJ93F`>=t^T#{$ZMG#FmW3>~SOy`Y^K
zdR{g3qe#_&urF;OGm8Yf-asEhmFdn5gQE!*DDI)|UrAl->}4h;d14#+1zQ9+zMzAJ
zs2NEo22LA0mU1vYG`$xshH_BV@mSx|B3$A9nTsCUD8JI~Z;&_-%s4<*$p$+ErHP}R
zk9n*~a$`+CQ*=l?rzK>8{A%(HyR6mkQ5s56u$>~{WC9#>%_4jXt0zig)vywilQV7K
zPU+>wV7=dx`dycW?#z^AcU=fRQACFuTyF!0aUU$3-9l`<8KMtXVYvayL7&XAz`ee-
zBry{@E7d)fqhhf0_D(DbxHa-<3bihdu~yFM1E)G6hpnzzcNi%i2u|qYjt0U?Ih*Y6
z*?eM7y0Mup(rOVe^HqU{(8M766omSjXPtR1I^XkccTFwCGbo>zBoYGw$<*h}&K>y8
zxh|x%W*CaPu?rZ?v0{P|0}Gp`gP}4gViG!%cnJ4P2!H&8C`or9ojWf*79%1CY0w>m
z=uh68G78l72ACg8=-wtOvgXE3h$2DnbN5f^2?tv)8~7aA5R!{-^|oyZiFd|mRIS`~
z0~&IHsBshmFdc8dqio(L(Uw~=#0|Bc<(zLn&vFX+M^2~g<o!6Qu_UTcY0BnFv=>O=
ztNRMH##_|J3)Eykk|FVNb0;w%ooR)<g?Rib#bwhX^z;2`))AESTE63}R{jzJOU%i5
z;F`#Xz3J9@rbQ-iFUGz0l*{Y-j&mOp3$cK1-S@gAur54NF(w{GV8zOWOzPB;q~zDm
zX|sF%>C60j_rsRM{%wZhZQHvWj98O^oG^ln;_XN_qr|$@c=ROn*Xx)#zl}#ti3Ziz
z5i9aloJ8svQBI`0^xdO~Kw=q>kX?u0>}jy~7`>QR{b$<0!4=7#c!YUlH7YYOMW7Sq
zoa!4ej1(Zl&$!e`mjpKY(%S^eI;Atok5pWutJa67G<i+D<fqW5$b`cj2!#^W{nn??
zwtGL_6_b$xpn{8QA0};Xm(y<i=am-5X_QDCPE6Wkdpe(okX?5f_Y?MXd;;~XC@V2Z
z^PxCa^Ef=JQqn}bb;-S@AZ*#tWzAOwH?XPl+?e0|X(LNb|0hys%_&v<o5BDL4Mh=5
zS^9OqFk_<Z=+9y^n5L-ac;?PMMRO?T=rV4ha=!+T@rtv~i4D?RKUt<nJy$68A#@G3
zF1NWx{N@iaRmJE~7x`Vf?zVJ{;mU8soXJ}mpEvl^F$_7=KS?QkC`hNA>#g5K^2KqC
zHuV&5=eT@-zjnLuwiB&H$Iaa4j}*$#n6AR{VCrHb(p1EXFJ82M6|?vP0NX7cXfG}h
zWmx#}F^1$Cy3vv@U1rfesUQC4v^IG5yGL!mp3uq4!Qz?}?UjClbeGi&Zh(CsO`?Z^
zCBa^18{q%+rIQ%jkTHPnO%i<NvCwtkG)yr1<|Wf_fU%Xn>NfzT*pa&3MKbh&;CzbV
zxASJbAs(|L(ui8T!6w|v6Nbfq8-U;KKekr;d~9^rGBkytv)pP#N7(&4Isvo(4neYZ
zYrgQQd|WJvj^~1!v@?7!MQycJ!XoOwl2-!+hYymaQSep#wgk4wtelC%2fjw$+%Q4I
zOUGR}+ck}u&nDxiiEG260P?7CAoOTQ4>hQGv9-BCvg(bzRnBAK`<na0`A@di$~uAf
zN~Wv7NcxGL?zBCstdK>*Ce8$#ZTqi)vooYvnS$?EX96E@=dawi&i16{!J(EUh%*vV
zJYTG=pqe%CODhn5j))vVw0Y^a&rrWSj&<qvNZ~=C4Q-)(*7r>$xnr9eGpj37sAcR=
zeGodmQc~UC+9*>DyE9i6(icN$fZ4M>C5x271qn$fWLrvGm37Ds-piQ=z6n8VDNoE#
z{}kYiX{@JpLI$4v2>i-oT{HkIuGQOFQ*ynSv#mJmi$QiLOKzgK9YN>i&v%E7@-hX;
zR5=oPf`Y;D#_^{c#m`@Ko1fwZi8igf;-u%U_^)=W11Zo&6INdb`T?4HajC{|Sjk+8
z7ApkRyNfNZs3LCSuhI+`!N!b>VmC7M-Z$4Qdf$E}dR_~PfOMg47m8e+Kxt9bho01L
zFlgFu1u+;|S#P>TIbV|=A{;(Dv+Em2<%patDvYOdQC0sZ72JE^1EjLdPFsrn?)d=1
zZ_gv*KwOTg^c5cnbe-c)k8ugYmxFcBJ@;$D?hHl1`Q}JQ538+sx`YJim<#vm+dW_p
zF2!OM__W=B=4qpW0;2^zG^y=ooy7;#988{9Mm(~O%rNra>}@cxo14o|?1Soln$84l
zoZe12T1tCmUmi>^t_?FyeG1@pd11Y0c*#aj{|W+k6t)NR+F_0#Gc`YW6(``B%Ju)p
zR37_R>>^v#Qg(G{Ikg(Wsv4e35Sj|bTl7UW5bP>ux0<|kc~GVIl#c0r#L(0<(TL~U
zl8a}Dt*g!E2K|SR*VT)FICsEJr(19$F+&Y~LBq}3yEbbuJ3=hxY@Luc;Hm!7V)LPs
z&*QaUO4jMqZ>^U?(1S^ST*n!lz*!1{O+6NePD=1$d6<MkIEuCZR&if_%%w`V@58no
zbm_TIy~}-i8v7h?Zv*dgZ{zf`z*<(LsrqZy`CghgZMLVi1xHl~_%TR!9v`um{V>*I
zPH%d_d*8x9yvZMk4dfhb#Y+2EgY?s}y3j&H+OJHTYds{(=lZ8q(2tb~j0^u56qgAj
zF*<z$3^n|iikAJv=fOV2`+PGce4aE|>zxL+EK>?v2AKJmlF1WT9vhx`!v0XS)Vh~!
zlbYMwtbXTGuh6qgP*OgunqC*NabT4ss~5AesGxm_2|n5sfDmdZ%|?1({2V-e1ihMn
zkGY-qiBVeA9X12{5_S6=xa)onAm~1nKK|HD^n03H>M|mH-S}3;`}xXu1$3WnE~S#R
zjFxIk+|tP5_!0Id(=d8hw0hz9?_PZ+$RQ)67q;jov>bp8Bix;?VC0zEcWe)Isguqw
zg;$oLhvB8v#*zDLK6?3w*Sqz`N3q6R_9CdYe)F2r_w|hcztK)S{V9^qX<XM^>|(sS
zke&G+U%IH;M?cv9V@C#8+lDnAC(7~g&`ucm$BA4o9G+lc_Wf?-tasl+A3%s;JDK_N
z;9PgU`MS2C*%qf(EUV6RpknY&?rzr_b@}m;k?Fjh_5{w2<zI?(*5U`(?7P#f`?&$U
znVrOwR-n4oAFd&9Qww;5-B2p>16F~#MCe5SU@2GlMiH9lUz8!$bE!rETh*{Kt`efq
zn6j~L_NdCn`y#6Q`kc~ofu|!)X``4jeYxxW>5O6Ux!xEg0-A9aX}mK|%{Q0}(g+55
z)KOJky`Lf29w?L~FGA)W@-(MmH_Vzfa7f+{5Lx>WvOB+CzVtx5J>YQuYlgKYo3OHB
z+upj1)lAAT$2rZA0gVAlRVA4H`LvDI;you1xK8&oTbGvHT@!Sy@D3X8`XpZLeDC&r
zIuT@XG(?X*qLe!g-b;DjRTc`39tnL(V$yTOfL`0dZ0@K-RXmDRw7QEr8@Rkx(m5Yy
zrk5x_1D_S&Mjp|JhA{0qihhu5mh^28P9a=Mz!7_mSLpJ)bnW<HIPGPfGd0H4Gf9)0
z`&eF`n+ET0M*@kF-1h-`NIGubO^1YN^I$gKjC3l3GcWThSkX!!N=MXRZfzCP@9a8$
zyk)%#$(*F0JfA&w%gM`!hK<so&as`X+Ym8#pSM=(K5fHYdtt;Dokt|9zr^?lFP7KX
z?1OE%TzhQ*u5p6$7vLXbSU6C?h0-zm+rKRXUg6*`af+HKL~^RqLltA2wMe7KZCtB_
z-^Ws_TTblXQ|1`#o+YVA3x-A#W2&+%A>Mghw~3Yewlqm4aTS`7N#83Q{8q@1Y^L9T
zYOak$BdjvJ>b(2xw^i3)G?>W7Yy9bKs74~h-}=b7fa<}zy55K}P<31j6lb6g-wL*9
z0%vaNj5!IxO;6@nwO8AMLhor3w9R{^$tc-;>uPp>(U}&Lf)kesL@>(k*foM*Cq_~9
zPsI0oskOvN_4HLhG51y1fck#WvabtRUe5GbvEn04`o%B$lZJQjC*YHM^<sIT=`aKb
zp((z^dhk%GL|Go9u7`fg&+<QXjYdXa_?1^?L#Qe3GkFUF0mx?W9IfCmzfA|BKckOy
zu`OMAJ3bL=1iD^+k1qDRCkGMixM|OHdKjgKZE}*4bjn&xJF-8(WlN#mRZ6l!Z<$|`
zGktm|@_}2|<LC3ZtOw!qItLfyJ+;*17aZO^#!BjWcy$U$V`CCvDnCk3&l5Z8%XA!V
zUHi=71!*~k>fSvk^1x%TMTmZMjjvG?3#HRwGTk3T6nIXHX!)!vZh3xz;-0ak(v7j-
z80<G#8oZU&s5^TH=DeRZ=fZ|*kYC3Rh=L)}0LZUH(e+Wk9Gbz7TUlI5O*IAzSRE(X
zej>c0^W)h^X38KL(Lr?riN3bHE-`+=o+o`JnHj{p>Ehro@U3d;w?!gSAT|wytU_7Y
zfw<rJGeV)|)pPmA@Yn(z2yei%qQMJUZEtDdVq)ZDBx^%HlE0K_;_lRU5?Ni?nT@{#
zI9OToH9XKuz9U4Rhl)-RhvfE_%VQk2guD@nm;%7DRYtxvgUvVbuIsFrnu`{S<!R34
z#;7QR7xYIx7hJt&eMS0Xqp>oJiOlJo)==;RnTMaJOSxG)lp^he43cFY{Dd8ZNas<)
zcAmAt1<<QB!vDV)VEYRZR8wtMBzPc;bbl0p!O)g%6+C8%eG`1GCSqaXi;vpElyIqE
z4DqqYRsd6#d1P?BRNL;ZYRxP<fCdS>#<^&{;fyS}@Q_@37E*Yx?7qTB7hjT5Sh1=q
zB@y|q-2Wo$gt86wafQ5^y{WE#z3j?e&!=J03`fI#yqEtp_4pYE{Mb>+^tsUHJ60|5
z@IzwKbEbGSa3IxN{DdaMnJ$tj`b27h{a;+}J&?m?EPP^dCi{nSlR$#lB0dPp6wNWV
zbK|xG(XeLQ`V{1{(^C(q4BkgGRWsQU==rfI)%dLjyMh;8<A@E~Uqm6m+ypiq7KxGc
zeC!_<=w<6ne)Yd~9z{VGwS@H;`|5xfXMKJv>t8rF2;1wfez~p)pDu+x_kH%Mp--l_
z+YV>aABp1npi9yBqRowc_g0jTth<LYu;`~Ku6sN%Fh0@dp(a(b`3FZk$r{>xghcu=
zF->i_fU-W7b@@n~N-=BJ;)*1x02;ZX3~-q2w_X)wFp!I<$*i-LhI-aCEehx#7~*1F
zcma%B^8*+fUBBeCWfuEaJwAqtg=8N1{|vfxXJu&WU>yXp>1&9LYO(+Q4fFd~Mfcv>
zS-Xvw8{ITthoeF`(<58=x^yT40tetO-@<t}>ht$w$00iysCRko{1UWI*CPg@@8R*;
z=dOLN3xPOvz<+Y}Rn-O$Z+C9JenxmKFLL!ZEm=YjD#|A{lP`~=LU7^1aMG7qj2@4J
z=y>`(ZhjW`Br?dGCvTGrnJJu9Uwt&Fq+D+!b(8Q;vn}!~JkEK0To)DByISboNt}US
z&mL5Zj>3@NuHtgvPZlc?l#WI}@7_OR(sad(X^4eRQ8xvnad3bN+{D$lY=`*m=S3(C
zq->;eaIZ}t*njfIbXf3*`zR;<6H2DUr%$90jLFyj<?<MV)+}-+gRiJpX_D~-R>w<@
z+F-->;(Eyqx^M`(RcO&vv;826Z>qip$9`rlI{plTp;mgvMel0Ath77M$eUF^t(EXW
z9S_yzMFqZkzV$ngTKDDnF^Pnxy^2Iz)K)%LWz$9G!6)0}CmGp$zb8bBVyHP`E@oQK
ztjwnojRZUHjtY<`X7laAz~eS!F}G+Dg7TY}k_W=~nDw1xzr>w;k86(({5k#pktO)r
zAc+_^bcqGyvuZs`Ja<e~`a`sVhn?RiBKXc-@**IDPb<|@L*}&UbwzQj*<<;k+-aSu
z5<Dr)KwW{?<y);*Cjk&I)?)fa0|!jFWY+^aZVS~#RupB{>cZ@VsnK&~+cZq~_m5s~
z>aJPtUlb~#uru@M2lYUHpuzi1LZ;_|RS*al^p_#y_wFD;T)n>Ix7QGg_XKpo6eOOp
zOcCQ(O~x%5#Tq6{ffNk3!7ZX%)|1uugXh1!Ks8VCL+8={76;%wb<i5TpA^n7s2wi&
zZ8;OsC<8npk}3N_eujn|KwB$L#y#nE`(ckWA5=UQ%nb-Ycy!Qa!QqC9iTn?7Os~B<
zJv#LBID~ml-&`J}$SBAsk<ohV=kSUM31JSLplzKM@2NXJcB>_!L3`xCYJ{pv@9;?t
zI$N+)Zpf07ypglXv^MjLcUodxgjyR<orjMCXNCO|ljLb`pTb6#vC_l+S+9_95}qf2
zQVt59Zshj4iBT3?F1u2mCM<jhy*Hd0y59!LB4eft)LP-bObr?!Km^)NRK3`L(uDl_
zI@J5uJ~9l0e16c>2aqIHV+t}b)~MsAH(p1no@G(IiXAe_Rn>tgI%kd$7zwZ7@M^1g
zwR5W%86#JKv6)L#nwu-lDbUXA{n<OMr=K%JTU^clccI2Xi#JR5(BiP=_7MpKO2kwE
zWh&{7UiN0q+52f_@uNo^%b<TjW3#tN{`FR@@-SAQ7Vh6J`}AS|<zsyl+r+v~d)OdH
z*)IX)__UD>qpjg5wWzhW?{RD#kftdUh1IrF$TCg9Tiq?R4Ii-eX#!$SKKaFH@HLNh
zpvUF!X$I}T<~-<IGc)9yuTxpeuj%O^1O!noZk(omZf@+eYp5g)%n=T^42niYia;Ib
zS?#}Bbq}$#8mgf3_l=oe8)0Xcb?*MYFV~as4+wMf=!~5O)0TuON~Nz42-iK}86HQy
zlaY}MSdG8QNYtx!goXnt|NUk6efH|r=LsP2*F{2UPk{6M>@d+a3mT?Rqo45{UR}dh
zXpaGrQ8IAWoEQD9v7eL*f9})E2i5{`$A0m=(h2hRV&S*bFsCuonnNQ?`~@~r9Rf&g
z>HziOJD2!M9q*;KMyl$K%g33G4IxQMaDuET`lE)?+M=d#!S!2_rcEfp$L&@MdJC9k
z&KMnBE3MnMq&0$8U}+e3vYF$fZOrX<Oy{z2(O|h)CM#pw{BqYWu}%~I7E{b+PI-Cv
z(QR-Uc!hqufBqta>2^G35b~P)p+r!kSw|+LZp(Lia#R?v*O%kt<NaH%t^pyL{oPA}
z;Jbk2)FRWxAw2HJd|rN$g8l4~?rHRzcR=4CCbIEaSFm0a!FM=b!ez)FCA!t;-Wb7X
zQsVldhr+B*^7wBFyDZ<JD6wTywtHbhps1t=oT<hpzlo!0Cd(7Z#^?{(1KUb}a;5Ds
zv{j(GQtG|Fv>YG0*KaosgOu3AJCE~!h6U2I00(D!zJFcE2<k&N|1T|ylc3E@vxRhp
zueglNV%*jpGl>W_ZVqF7K3M<jFLEqUQd1M}xg5THbR4RK-t;Q~25ehu<CY0asj3O}
zYq=n7PRtHjQmY0=%kxQBYc@_J_x`C~A{V&sq?)-^W@6iQbhA0#PR=0Q&AQ~FIORo$
z4)T}M<A`gsO0LcXK5opZT;tOq$}zKlAHC{<n45!vjUy5CM*=*E?lrCRG~8iWYBg|#
za9h4>6SnTc!1tTFc*Ii?txs4MR}ah}xLuwZjgPO}tj|s+PeNf6X4Ag5KYFMpSEo<^
zImN6qc7@V6h~5!V6Tl@SIq4TB^tv)DDn|RtHQPH2JtIfdP>6SR)rZ6>pT=<3>aJHq
zb7u>9r1CD^-KR{tO()WQ0dfv~xn~a4{BhQ3c`iQYJMT<)S3Mj^pj)?|PtVhzY0tOL
z7Pdb_q*=|76;H@Hvc$%S<7WTdt*L7TOAV;Nn@c$w238S3;o#P!bT%^C9X>LxS*hIN
zV;BgatSqj&Ki(u*+Z_Z`o!t*)!DWO=lrPtwgGfte8_}pjzPr%>G~H)`)AW&}QtMrF
zdl9IXF(DTdC6`Lt%&7ca8updZ(CGeen}TEO_PM02ERPa<tL1^1>Fn(AOeHxFHtv2s
z%d5}I_j!aEDBuGXzT<Gl{R@#*FOCX+E~A)-7k2gclBW%Cgre3!Hq~RE<u?rjAE-tB
zSCYg#Eee5{@acSIJSY72FrP>Z($a((msg8)Y?U@)wVCNa@kx5k`N#(HMZo>vvz93{
zxHNnmDrF7tkz+aq5u3{D?Zo=OW-tz)UBVBS<ARz5Lezmxo~{#@HU*vaaSxF4?Cim}
zU>s$nCFKaS$S|l?i0G5GwmSBI6^~GJ;IOK}%F4=0%3yz}sSTc{h<gI;nc5#?>THC4
zI0tyExg)hZW80hLoqNl&@qznsIU~+b7PxSpv)o7XNLeF>i^#Rx*g8#jR~ZJMX-K|D
z2pF3hY7h&;K!QrQp7{7gbGjk1v8_Ln&8!!p6(9Q>!!3pja~;?5&aHPQDK!qBlKVmX
zefM3KpQhjUES7IPT^Q}mKC^X^$?#!V{DjGFd2x?4X9hZ=zX7_8SClb?<wq2KzDw!Z
zBCFA$wSDvbe5G>Ut!g_dE2sT1*KKid9QlC}oLCemM_G!>gJerYl3b_RSddonOHruj
za(jxZIF%@DPB%+#F~Y{X7gCEOHJF}MBu25&%o44gaP?PW{A31Fjg>2}t?eJt4}1~m
z4#FhE9$DKFMHM{+HDMxfaI}euC1JEV=H>ev#*eG<RnO<N$@viL)Xn9<*nJFx4ca(%
z6j~8uSYBiA6)kIzxnL^C2c2lM$rZ@27|JzN@i4_Iq20})R~B`0PXzwu`C2O?phPmQ
z9R!At7ofgRqOZD%rVafRLRgIY44TQ}q;ceFGOWxzgKT=c_}xWlF|@M<6rmx%_?ioU
z%XcnRWC;q7q$nsk`i8+lSI;*(Y{)_{Kwf|2yR*9x1)H{A>tD90Ceh5fLd00$0R3C3
zGa`-!9QY&YZkUeQ2{l|ZtF+Yh{%-TMOUCDMm`@FcNuT{&Lro^NM?o-G59_WJJKXU4
z#*@7<2nK?0+0-JY><7V}5)mS6HOoX_6HoeSSt-KvwKu<+GX~uCx&5ZN;xskLJC)zk
z|MYuw>hD~CA2kist{#2Y8HR=gpOCe;Mr!I?>GTWTz9#1lA;sSm2v?LZc0q^kj!%L#
z036!R#Y;%E52xa%lBUfcpPU?KI!BK(W_eQ}i_HARG}|9@%l5UxN=Ufwco@C5%=X&z
zylB}Lprk4~)?G5T|DkRCD@ZpE+A`M?cRM!bWrcR-#QNxG)XWBc5eqJ<E&=h@qpGUs
zevPvQk>JPmHxT7*&KHG_wg2gbCSjKQWvbjii*^?+cfEGu7%kY=ui&6Cw=m@c9vL~9
z`iJifr*b>!fkkyN_f7_tBvIuTPQ50`?P5diYpKr>OjbYuOaX;fv)wkzGXM%P@+xim
zExoIY1>}Iqb`SWmxmpqyg3bM1n6@fG=Gey9h^qPh0rcVgqOg=kM%1L`j5aRa|M$Vq
z(6)4tM&U0Mf>IkbsI`_JotZ(uZjm6(jgvYePrw~bj80~qaRrxWV}VDTt6`RJ2fVJj
z&n<Ex_Viq*#DzAsTQW21cBDH{ig$OE|7KcS9#5lU+8t;-_ct{rokFVqWK-waM9Qsk
z`+!IRwk-C#LLRd$19}77Is`~F?AU6oQ`@_{KrN-wNuCZCF85n@F+2078*O!%G;|%w
zR8-uex8fUbp9b8S$TdwQQyAuUS`m0XkA@DHyBP%2+pQ)=HXN7JGP`^c%BbVcY}7Zl
zDKKT7KAtxL;+MdH|B@)i_Pv)hB^r4G4SMMx{_mr3-c;Z1TzSi4*IW)&<OVYj@=Xof
z!V`1r@+`{&nQ8_)<urKmM}_1?k;RpcRykAep|V{c{y_ZlMTDB>n;XQ?SQF#xbTXYh
zj`)(rNWOK&1WS_ITo5<M#FxHL<$?@UU;*@O;8=J#1PTg1kv^{9vlkhC!3+$L>X0ha
z*1KF)=Fq*{d#7fj6Zt>KQX87TV~0X|m|I;Oj^IVSD)fHgejgaj^tGW9?D`Ov7&5lZ
zQ<;UCf+cP-wPiZRLQ<*#kuB{F1d?{kleS!@|K@Hn1M%M<Uu}6<LE3(t=0{WDlCx|1
zaI|aLzCN3+PuQr7fAl-n_5OVfhK@Qu(ko5)ybj0bd59T*t?T4WytUiGMKIpJ;R-t`
z-$)^GU}8nvySnM?s^nv<mpWLUY@CjnY-y~8I?m1_k2cO+TjA1aX_RhmuEUt}pGg^M
zVM2W&5&zO~Z<jz-mj%+QBn1$#Y03B6=SJvf4z+B1FO6pCwJ^L-b#7w23Q>=05T^wn
zES8!ob2D7MrU+P5&pchM-jOwEGgUyD*W-QtnhNeU_M1PNF7_f8Z>FX*11LzgRPd!Y
z3gawg2b9-*-r;OIoY`vQG@I6Ul{|OxVzxU|vJ{+U3(ok^&>R`tj&#KD!}G4LtKad6
zp57#Hf!Z~6(ayhd79rfe#ybQVY>rvFDE_ETp|R|GL}9f<uP!G|Ugsf^kQy@MwV&QT
z8l`g9;Q;A?k_nJX|8u00?%^9>L*-B7$AopwqJnmB>;hBU;GEDR99{SIe%<#<UTh*D
zXph1E{zMFLs?J%1nJ>-QRHpwFrKC(qNlZVn6`jP(hgOn+H)eOUDLwr!b3fFOv>Zh(
zy|jjgp!-^FTy8E6CX-!m+ki~8n8@xy#<}T%lnDXCtxhU#qx;6j(@eshJJDVuS9LRz
zU$g1;Mvyuq=<2^r@&SAG0w_?Xi7zDw9W?z(KUA-Wmg)6o%xSy)+Y-}W3DQuy_uvD%
zT!*ssf%oqzCW?WPfSe^MyabroYTwza2Z+Bs)1}47n-?a76{FWfG6O$g8;<L0FM+o{
zLP;BI;WoE?nrcbw@`xra{SQvI6f1W=8lsodJZznEASr~JFOuuI(u#t<SOb5b*e3ZX
zA1NStd)xBsS}4)SP;%w{6+wTjBJUgc-2v~;)`ouq32c@dEqR&Vo^ces$GytR-aK^z
zxkr)yG3oVUKpyp%56R5UxMn5i^zOD7OP^qV2>I9kVL2nvCoax71E$k>92+L8F{r4%
z!i6e_c69BBG5?mbMkrG(WFpA&IY?uS=66GhifZ&HFnzjK<a9W9zZ@OE)M@mEA?iK=
z3rT1aj5<RBa(k%pzTm@pIP)%j|MA4B=9`pguDqbxA6}n~mW4G%)~DD0(z^Q)6&WdK
z7Un>iy_2kC0|p;#t?75HqvigWCK3UDu6da9ApqQm4{-Y4aZ!;FIxi_350v$1)P2K<
zQwm70GQq(WiKsWa#h#Q$36Z3vy>QB8Rn_OgHd3<=ffz?I;3l2uw$xhbxf_8u;YUj?
z8dOm{-$Ag~9IUDW75IF{TY5UXILq(=&|<v-*}iYbo1{jb7O>)#9oR0L<=3~S|EwgE
z=UT4yi$9?yB2-LE;F|3xT@VmaBSfXiN>A2S&uonRsgn*}tl}y5oriU@qlxE2+I~oT
zQFWR-MbF;|yTbGRlo{byC(|W}p_g&Ew|z%OVR_1IS4rnjXLT;<oxVW>921k>J0wJ>
zD?=imcW}V_hQ3!(FFS&%RUjXjvqZ>TZ`_K1Z+C|;Qswr<K_MiHp%N){ygTsJ8W;0X
z{}vm(Jp?pVLPSn(YVW+0*<KB<xa-mbcZKX{n_9<Bf&Wi%U!(;!eM(~*)!Z6mqab5%
ze(*HO$7G7-Km5^lODN_v6y8AYo``09^A3B~)#+2EKM1P?GqpA(-J4!ayzUn!003&i
zUf3$pR+F`#Efjyvw9v=hqF{d^u!X(T-iVQShxXqJ3BP)M|CyewUzwwHx#*F{8z5HO
z+)|h6y@`>LN~5w}xB*?RT~u<7x8GVQg~Ee(&LfWDQk5n7cnc*x`P1|DVu4f5d1$|S
z_bDP~$l$zrPG9W$6`e4{5*zcnAlghCU3><)lomCAA3X&*u)rKy@nGWZsDqhqN>`+y
zF*)p40=Y?P$E2q9DXH$uG1ANovbbzvYS`pVEr7%}Vs-gu08X<gEHS>A2oS#AWuzc*
zI&h~&#|a8cW7aXy-s13;ulnZi8jjA-(R|+D^ZX2dyzSHy-iHyYfX1$%YifV^=T%-|
zSb<Rj1x%PK8zFf|CW@eC=jHDdofj90C@~hl2(7~B6jmMBj?Xde!cZ?Nj{<tA@zeoZ
ziLfBnKlo=29*vUYmxl;dVMb&$6*H`&_c&oT)$;9xul`fNc~QuDsLSgt<XV%nX!48~
z;$5xZr*LfiMWvpu`+nnu+<~%fH1E4+*T;CZG9HYX{8ro!m-BYtV0qXtpLZDpgYH=_
z<{bQ^bCvGr83#k^DrzaXQhD_1kdf3X#QK&M`vgOs@6s%-YOKL*uC2aM%?P!JX@m+b
zKRMLmgpRpo^3YKZ9@WsHHC|Cfwv;f^@kEyIJ89Mp-5;^rw9NIKVFY*Qe?(?<Ur~Xq
zq_{Y(PC?xS;*0(wJKN|avebfqyt|#Ft1@fw`_Ak8(dVh_+|PBSxfT+uOh|n@`o-|q
zv?Os-q1hV(jfY#p)4g53uB#iqm!EtY6@TSOYFtdM>evrW!)6rHs}NHGFZZuMBgnG|
z#?XxPGwQ2q?2UASA4CItPL)bZAIKo&<f-Zfx|fX-a^(FVU_8!cd0K6UeZ)~VuCJxt
zF4iI}u?Hlmo|jWTGqS7j7Z!rbpHCF4#H484@rQ~XzDA60;OZ)LWp(lJ%SjK9FNv<~
zmiVwc@*{9TA|aH4Y2qHsV%T@ufV~EAdh1XOGy`eUiAV+&AXk-`&W0HUDj#}a<~T0u
ztCJP=(4;{F7e`ii%P&Ej?&%HJm9dzsp<Tx&+jUVH+1x>ux0h2vvtj4eI+apF45Y1>
zFBgBp%jxQh)&vY;MGSV-YEF3H^rhBXxUAKiO=tuck0FMpTKXA|2Jyh84sZk$y|pGh
z;%^Rz!42KMT1=xm+T}4hR3VS{d7`$vJTN`JO^CN9X7o!j)8H!eN$T%}Cm!Enrb+rr
zMdWM_|0&0;^?B82mS_CD8E)C{w%=JsPy~Na_)D1cG{KAY1(PQ~(1TxoW^oc^Tn`#M
z8j!}ZZ#0n_JqQ*zM;ED9U;QQCC)bpShLS;z3%2aF2ilrYAM96_|3+RG{VN-*w_Je^
zm6k-YCZg;TYp%aZhA?d503mG}@-+Lqa6Ax$NT7P`1OsllwLIfGjArARDFwBv+^qkS
z2*lxE@1vjW{NKMbss@+x<fs8(!?B61h<(U}gWY1(o?5IGP6}vr^EITTW`#r9=&sD(
zPK|lYnu*XzDwM9I|HF-8cmNb3GBWbdTZ2=pVieJu%@hX}8J$F|lb%ivF6&W}U0tqk
zPRZS7neutWgIQd3T8;VK`d1kHS+jF-p(v6ov(=`Rsgf2lScT!)N5wc=xGw;}#i0$p
z6W}ls1C{qkw}am~BB$xMOo|Dls)^j<arfod<7pVop#LlvCc?UO9nwhz1UAA_POhF2
z8$g<C0Eo5faxj3BGtLg7Xw$v~jd520pzTRV6k1rvT9%cQEuSL3w9JFguEIthS0#*w
z5Vs<Y31fk>cb>dZMT~l<(1%P7VBIew@bLoPFkf_ocPn*?{N`&mxvr(UWt7kEEt6&s
zHV#%Nn!EufD--e1^zDr>n19`;LbLgQl@1&<1Xx33QvvFzDlH-K4_axE??gu;OTK(q
z@sQPFz6Wv_uBla7#SQq)ii8CK@R}<Q*h?f#<{BK?Br!)U(3n?OaKo(N;m)Hr0>jD<
zR+e(Z@iXjg+mzE$@nO(ctFd;E`DeNv>N7tK6akcRGL-S!v}v=-G<t$nwlkqP31bJP
zQg~%Z+ttEFvrq}s0nljaeMp4oTa)D>-0u6(GUlFo`na+<YFbZ`PUa47T^hom$vdhR
z$mI2#K<E0ovw+h&2$q${xO7@|25Wbinc#>;R34s#VYJZ#OvQml57ttuc<J5wzkk*p
zZFQFuBAaqvP<#i~1DB=j!@}^zeoFVQ>!dGn{+NVPJSk)>IV`SK-KiwS&>Y%y7n9!}
zlbM~F=y-L?$XYR_x*eVV!-aj-_Fql)x5i~OFR18rG_lCKt;jOH2&dW}Z=KP5xS~^A
z53dXh1-e*zrfh;2k#U(9br0{6=|FGz-VrdYIw~;u3WZ5Ku$<S00Y>^eur5PYx*=$n
zFOJr4c~Zf-><5pkk#EL-wNaF?5;`V>e(G$4sf;XnqZn%;UR!R~8hghAZ%MJ+$t2tl
zJ`sq%kv&t#aQH-u{-C0p^5T`{6~W&2=yR$qhR$mtyKH4KRhkptl%Rg6R6NI%XgzC@
z#s!Me7*aJ&9_F3@c723{z(6sXbW`OD?@X0ti(K>+DH5bjDh0aM+5Tp%6iw<d2GfcW
z8`BAw8x|jF1+5HSKzslG1=uRk$K+6D29tG~r8mDtfeBAkEdPVnI<1XXH5F%&mLnOB
zZHB_q265CkXpJ5x6@)RKGPHZ$QgrO4ym*&bbh_eXqN_pqP|%bX5zQH#2knPlI@lwJ
zp{Ohz8#VRR@{k*x*=&`1s~(k;sOoL@qt+U7bB`{4G2~*2siufCG38D-{_Q4I>7cRo
zzf)lU`I)#tr$Nb~r}#w^a+ca-brpN0&T=Z0?i5X9gTpv|rx+i&Go4blA$72o5IEY<
z9}NqLu^p!^zAO2osNhIw)noDBrMS@zU2RL)pD`-F(MU!z{^MR;Nm*HyHwf4B$Rf+I
z#G=B6#3G!KI2$fX<*w3{;^x}BAe=(ZKra6u{BG%yNzsYPdXJ|qm^1vidnX7H+@62F
z9}@AW`hl%m!z(~)5+Ei;UM0);jNU^1*N5vT_|wKF66n(B=tz_HN5yN6`98Ghc(f$9
zI6BSKvyN`T@vNrWB$og`Y>BcqE}fql%#-_%;zjh0v0^G$HSSI%g$eaoIr*+W=nZrY
zr7CBijuysP1(?g6p>E3)uaK;)?9SaHkjErlTZFA5$SBouomn~Aj3RmB%#RhD2=4@;
zisvu7KJaSM|3uvCx>Yi4PO1Ri&O0}l%1yHMX~|ceU1KTb${vJ4sSips`i-_s<oG{o
z%br0FbC^oA7-E0##gWCWHKk2rhv%=tlgJyzR)nAgVy_VK9n2RnX~$6c|9F2GD)S1k
zubvH$VgFY2_O>+*_r1+FJtCSQhou0+{lyw3f7j<0-O#qiV^DI#Dt4@F=D*@;3K{Wt
z>)yG2#&ds`yTY(ZSW8v0F%1KU$xko7pX8_!ML<HlD@IK&rB0WmLJz(^4TNkERt!3Y
zl+he861$6XqgNpg3r3>-wWNLsKJ{luKghj|o?iB4Ze`su3bB+Q!T-hA9U3@2T$rNE
zN;YVlFeFhaP<X1+R-|Z|E>KA)p=XjuN0_<XZqeX&9v1dvl@A>$j}}Z~HX41}4c|k!
z-Uya(X`^S?`{cXrAMDeVDAX!i(V}YBOiG6kka|yFGmT$~>i_RFk?sZn#|}>9)Rxn(
z-$hhZyK~{FKy`?@<V2QgoEQ$oPcw4P^)^!iXz+Lt5Gcrhy#RF|ON(h6Cnu3wk#S-t
zVVQmojIm9A4*d_`2sf0b9kUWLJ?E)!$t0Ow%@JoZJ^eX)ccAT;7l^B1&iV!g@i%Ug
zn+HU5XZGCv?jj^a>rYf@OlFzyY36G3LM$cT=b(yCioG8c7pwUNaJ0HaXbF)vXoI*w
zUW|}Q3}t%j*HN<1qiZ@mL+Yb(jl`|bs&`Ob(tC2#%TT5NFMI}r`On3>z?54iCyKV0
zcHzRs-z}mG7e>5>(x{-;Sy)j;Rq8B6R3Pg>L@jTyDcQL8c&&EvVySvP*?~q9sU<)j
ze*Rx;IK`REM>t`@B%W6>edfAP-e<4q03O--d%PZ{OpwFOC&m&!L6-nsxcCRd(xprN
z<4L8#gHmS+Gb#{u5*by53`;5Mgdl8s0u9N=wQIG=(xp=Md9#B}9cd)N&^X)(M{U61
z)Fopa+df5WxWw|jR{&Et`Q@kW1C9Iv9}jK4p>p1zWma4b;u4?>7yqEBU%Ir`lcLc=
zjjBS1Ev!04C}D|=N(d{K44WQbG}*LvjTT<MOnUtO>|iOuOd*XFn0ke$R7O*+#@cyP
z9Me8UM_u9-o5+c&6gPbSVf*tnMY;WnA6Fp1oC>V86wZYU7yp15?dqBmLd>+ZESb^+
zO1;MrF$*)Q2z6Qr!crkDEPXQ6zi~7;@ZzRablFlpvT%`J)!cv(0#5+p3D~4zq>!ct
zroo{o!=Wi34@@=i!1e~BL7g@8ra7j4iY1NlL)&~I4ZR=$GJDc<agLzVBz6^`3m5+j
zuyEnRz_j73_bOJ{5`?8G!-`PD2*OfOgC)Z#qFT!T-`?5tSWaYN_<c`R*>1P*-0t~+
zq5En{T7ZNQ0VHH3o9+MFXn(-|i%m8s01=T50b-)n(5zM?rf0gxZC|_2OW=D)J-Z-a
z8KS92vRtyQD!YP5$MxwePq*%F@4WZUcJ=n3yk2)N=OiG{P@Z-hxBq|9VOM8-u(`yC
zn`e0M&8uJCX88DD&+w1GegObDx_t|O{>vvwDWa+qsw$$cB2pDm*AZ0;s8U2#N7Tts
zRRJjl)F~|YDk}mk6kaFp-~aG19A4eY+iI;acP~U}SV7*2TtVnStRS@W;hQJp(Yt4J
zcmEAftHb}zaS<YXhLo2@820UMzmjOeTk8?0#{)J;*Vr5nI6WG1kp8PfhQ#;ZKEXf#
z_T}%ag&SEG0Tv3cAE&3MEt=-8&(=AyhGVrvfLwv-AYV~zVeBBa09&uR<GI^xwudKg
z%m;UGtLmDcFF`kCxNO9<xMn|0Ww$vK0D!xt^p`Vt={wyPo8xggj(VJ~d;I(B@9@Rn
zKYwNQPy|>gyvFQ*jS;b8W*2Q<N$enNVOY7;0%|F?fLa(^I%+qxUfnvLySLw(n>)8v
zue!PFTE&CvkDMTU;8z}=e76nP7h@bQhSdM(Dm{OEX+CF@oXW85q8vd^x{PvC3I+wZ
zCklyBC8;g~EEEdh#~-JY?=RPL@HG`%g}I}wm9V1iB0#AnQA278Yedw58aiqL4at;4
zYP~sLdvkj|RqIZvJ4C3GTa2(2WFZL25MmI6fdu5D&koI*d3I{fmZvPu+4A)mhG$nc
zUObP(4^PAP*`?@{z=7f<_-Mi)V3ct%XD`DD_g=If@Lpse;r;CKQbAWS<R9)f&BcQU
z54J^sg+k#4Bzbaja<C1nBWgNiiY?q*%38o%$XX{F18Trq--%B^y+l@ML?lVcL=%}H
zh2<I9QiuXX0{~edJ!^M;X*d)!L3b+C;UFdoS;RzXlG#LIlr#|>WEceu28@yqAbVx+
zL%^tPJx!OB+tb=tPtMQ3y4DTp6#*6sg`b3ExOeaU1FxsGVQ!gX%SnwBHRLTB8UnTG
ziL^%Ui9{_j(V1ila3mRwLV^?k0A|L0`UWDGUJrK%Z%9y@K)R%fv`Nxr;Na3^JNY><
z261p;lsH7@-ez5HxAEff<8PizKiw-+1Xw5(ei4$k*=%ZHeK5y-Yl1g{sP{rNGG(eU
zXA(UbnIxISWX1r&Bo8vPy$Ed|5$<r%cZFrTJ82n&yD$-+DVt<kqCjCZ)8ydb9;P6U
z;@l^X7vxp{=+UF`=cM=2cNGB^3WeXwUWiiHs@@*XlO-c+50-ppGRsM_5SWt`7Wql0
zU?FG`pJd_XJeQ43GU?2oNjhoScM+hurW`bd9H%+@RNLHRh&^!CpP!$P(r=&0Tm)Ds
z6kZ7=!`azcytoKeRjJ+vRxz;hJO|0mV+_gN<S_t%lD~)mIhg|hZO#BNnYqn#Ce0n;
zx^|A+Z5Y?<aeDah;S9j_3glG;SSS?!aJV1b2N3v__~?=VaQ5`6)pf0}@7;5J1^}P!
o2MFp_2<{i(s|c`AD7>!x2w;~a*A2g&fdBvi07*qoM6N<$f^1J@>;M1&
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..94d9124a3500e9b495b89a6a20d92085f53444d8
GIT binary patch
literal 764
zc%17D@N?(olHy`uVBq!ia0y~yVAKJ!jX2nV<g;tfw15;#x}&cn1H<|g=B!;Wfqcml
z*NBqf{Irtt#G+IN$CUh}R0Yr6#Prml)Wnp^!jq{s3=B+to-U3d6}OW9{Qqx%SVMw!
zae@dBD}#W8&tgXdF1Ldk5?Txj4Q||P0zte9j0}t>Q3<_GKwcXU1IL1kOxYqmKwb)i
z14FM^1W<ENlOi(%Q^uA9QedMbfkrK6y#_Y;1VaOZl<o$Qp{&kq3@ifN0>=Gp5KA?H
za!HMk0wH#O!DFXFK;ls=DITy@3mMR?TENtuYa#)$fsujbLIyXI`?eujz2ZQUJZ~G=
zf&gGxn%p{s<X&BB`IbpELT2$nh@ZGXeu_rc)M^TrFhck2EmaxpZo%nD6bT%meIcU}
zhkYns^wvPqfg|)Tya@e@!ynN&LPaOQ2CRs+Sq_g=*cdDrS=LMPcuxl=Uj|QCKbLh*
G2~7Z!QPtW2
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..b2ab1d9b7c170ee7d647fd52dc00e359c9278563
GIT binary patch
literal 43202
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
A^#A|>
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4463dce379745d2ecf3de0468a59d5977f404110
GIT binary patch
literal 7513
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1ef44d21fbf5d0854e569d4a03054001ea7a1260
GIT binary patch
literal 954
zc$@*c14aCaP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H112;)TK~y-6ZPQz9lXV=%@$dib`}Rc7>)OpOLuA8tOap-l-9n5p
zn4qF09^$+JU5qy>mwIWu@XC-#)WqnOiNr)9F~mi;5dy<Rc7l~MyR9s2?Yi?=kL%&>
z`@UWnNJM_O&y&y9^Am<)@Tl{@@ue&JO#6vcRq6;Bm66m&esJdOsnWwe@i1`g^WP3U
zePGXEq}Ag~*3ArN1%1IfrDB!IJFBT%qw$_wXHG8u7ns_sAn5umcKU<%eXsR;92TJq
zxSWRzIf?hYD$SBkMb(&0=k;HH9Xpl#_N^cP1#Wlj1x_coyn*lQKb^37TsUkJ=W~Lh
zY$EC~SS%Z4N;>bjtCVXR-wdxB_lAdeRWE$FAOmmKb;&iE-TmT3InCW-7_%KpRv8q*
zKwSn+!->uhYclG#K=>Mk(in^Z9vM&)Yu<p#VljW@KF5T<pILUZXoM(fPPD3tqc)w8
zUE`0m%2IlX$8(!lyhZoPXAhl`f%sy<`Fcr~X|U8dVjZPZPf(NXAPF!aR5u99I>nJ~
zB5o(o9c|-!{}9vRz`GJKmMz=-PAN~mZ05$rB6B}a(<(BEg$%W9g{88ArW-UhD7^gY
zAx4I-(Am*UpvmtPhGFpO+4qy7fZDd5EYjQC$M~hI+*Mat+GwQRB`A1(C|(&eW@chr
ztYlTPxe8nJGg%2BUO0TMT+&cNR>lYVS)Pj1w3_F5PXv#s@OGOZaN|0$-{XA8OPp7u
z3~Yyq=ft1{@ON7O>e^x$lT;^J$k5Z>PE~`s(LZVSTli~u5{tvZyb-{cyh5a!;7R)$
zp7rUA50>b9;p4HkmiocIXa;RAhc)CT(B@-vcAb^mRXPuM6YY+ms0FGU%Ou9*3|)#(
zN%tpNQ5t%t=4Jis%R%(k9bm7sw!DGnl32IeIrd67BSTloWm4RUPh;I-q3hri=?6fq
z|C5@c7JR8xMgL-;m7DVlhFSu(grSz9c#r3ggqe;dXz)9Es-p#6*X#d#CIHXA<L6Xc
zW3Ru_Cc=+ZaAY^x-{dvidalso5-HgvSxhF$o=9XS9ti*hckTfQ0y}{fAhWtKtKHAL
cgb;xFA3Y6rvkUkTQ~&?~07*qoM6N<$f(hfx00000
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..24dee04f55794baeed47ca24d420d803a3bf936f
GIT binary patch
literal 44266
zc%1FM2Ut^C*9Lk*=ptCKfrvVzV;vo_S5y>1stPDlRTO&x>E$GJq)1Pw(xga}-lX^5
zdoN1w38Cih6Lds};P?Okz;o|&zZK#`vd@0swbxmD?S0N0%)`6SR3Ip*=i%Ka$03N8
zk&M_li8PKp=G)$J^4~U2{M!h~W6nt5nn`;hhyZ<mezm>d+vhqE_lP=)ii!|^ZkHs2
zZUmI5$nT<#jv}HWqI2!U`R$BMpjqXWql%-7h^FRG?F0f1(|#2<N7r~q#GFzn2!y}+
z2@nmFxRi>MlViNoD;3vNZ=b!$0i^HkjQhp+?-v&Xwr?MXXCIF&(*IlgH~~WO{3$Ml
z-7hXKwtv6WJ~<wq`Th5T5s6Dl9paIa!b(Z)m*SC~#1iJW11w1?oqaq!vio@UNx|MZ
zMLtOXuMs8@!SA9{QgTwVQVeoDvcB0lKJd@&dwryCO7X}6Y`IAc1~W<g9zaRtcY=?v
zl-x}z;N+owjEwtb4}EVZQ3AfV*cTvx2T=<6!9@BVz`1s4Jg0aPG|SR3f@Vg^?*Sxz
zJ6~|_2h2_EAs)8<tW1Z#2Wb4;2_@{6)Pf~Rd&fzKB*(wE@12(uKbqvX@KCX@{fYC9
z@a+fuLz>GjkdWVUa=v}-PYKV$ws$Uj7H=mJ_kQL5$&I~xiC^0#r!iB&F!O$ZjT7ha
ziA2ow^z;<+nEw+rLHvqOK%gi;KiIb!HbK?M|92C(DDoQwp%|wjh#Q<}Hp&yt%SK{)
z%Qi&g&o*>!nr(=?iEZf88n&TbZyAOpE-?&Y4=@ZJc4rv6Aj>eMjA3Xwa)qIVgO8zw
z6=rBb@iMeP5PG3!3V5cI$?adj6L~$~4+b*11w4n?7Jia`esVAToc{TFZjmSV_uPga
z-c<o{fUdMKw4hTjW_qWqWEiA@XXf=(R0`$cF+&Cul6#ta`W*6@o&V6MJkHHhaE>GK
z1VfsuqR5$?o5)B?5-7<=nOI=j5s0F%M3MBId(8yuo8v1-(XX#j`^8mNR7ABVh?GPg
zhxSWJA>~DO{OfB;DIQP{d~(Jqm0~X>iUB1;R#NH^<uxdpu*XfQ{X9JTD2WW12@;c&
zlKT!FqRjli)1E-71f=ithJZNucVxagOd?|bwn?P_xa4=6w^n?$hfjDwiC|2_KpWUq
z-R&Kna5xt?cQ<!WFK_Sne*OU=-h4*T#uG73_4N&nEiJ8W?H!$;ySsaO`}_KdmTZO)
zi$v)JkvLA8n4FrPnKdD!(tbC9R?{d{5r&3GM#rk-y)I}vfBZ6QKt>hqHGtO8K5ZHw
z9VHBhheibLyX5L%5;=n<qZ&>cKx<d%b&y6UNY>s_@(L&JNIx<Wd^v+5qrM1&Hdc%7
z$%*OwTfd#>+Prxy*ACI+t8t)hSi%5eU++9HF*Ok3{pj2duFWST^tN+u+F1jWQAA|}
zh+|ve=+tDrS8SY*mxHB!PWEH}&M5pWnLMe1#zGvsqlr^fafzPJMkyaXykbjzYy9)l
z!F-)IVF0Zs(kEsnBR$^5huL|lxZ4-FN7!RDhREa@XI9X9sc33u$_;PU7+0sCTG8(L
za4jR<Ie<LtzZMIjZdAiFY|a)q+mQGE1pJ4<!;B0Y?*flwxv|i?`>o)x<YRBGqf2Z*
z<OaAuy>tJOZX0kpdp8DJk5>6Yo+T5G9JDtvcL{eg@~appG`&j)&E-ch5Dl|YKZcA>
zTeJHO2FGAQ3d*kV97q9;Etf$foBare%r+aiapQAvD$PlRxS+w2WYF3p4qDfH6R>2~
z*<2yE-FGc?%c~o|^bI9|#?iZ=@wbR^Lo&;Fp7mp8%jm-Nn8?Unm`p=@MFT@Lds3$D
z$uv_KIv7HoD0U#z%-FHO5Z&dxx~BR@xB=S;HJCJ^n|obW!4QjRdS_pE&p_YM@X*MZ
z*(iE!`U3|H(aO}$l4tD5j9EJ%h(={(b_$+>r;WgqZFUyaU2^$f5JdOpb8%xcw$-o&
zYBg+LQB_uT1{5GnbG6Mi_@=ou!_8Y#5+Mya2Lbo<*800=gsiU82_3O$Pu~d$F4uK6
z=35of7Z(?`58{C*Xhz;=Dn_ctuOJopCCv*3?qq1G^1QXWI6Nh<Y~ZInAL%QqZ*R*j
zsH@B_o1LHMBVQWh8#>Bs%BzYCOCo}1=jVBMOIB25W@ce|VP;Zln03PZJnyVdNd1(Q
zmXlvtSQ_r3d%tvko`1=YPS457%g-;Ys#LVjHh%s?o)5+)#Ct!=%ge|uEO$)N#aoZh
z&vR1L2ZumM%fK6sE+tmhYEKmVe#rA6Z_{*};737`v4*DVcf_ClnCCIhUa$33O&gwR
zX^1J@kT?7x&kG;p-kQ2=**dFhJh^-S$>aJT^PH$8hu1UoigbEnlUP?6{5<@JJZH-n
zlCpJnadFk`dgJEvG9l=vM2{90g2A~|Z7#LYO-y?KQ=%6=<CoB|xgQb`5D}Z`{!^kC
zxWRfhA?Y#x9&Yjf-%s?XuZ&cUK%!%oIMKU5w>LJlbd3I#=sl%P{Uak|BmF%s9X}*`
zpWCyKBV(fk;^<I+cSq$9i5~b;DW!jSY<yyTY^e83L(RNICs{mFRQpiYJ4PHE>g#Pz
zb}5^m=+25y?%dbZF|~HEwY;u@my`M-(Ni8szLGs8|5QU;OH<kT_I-sP5`E~QqJWi-
z^zDmJ6f|x<Q;?VXG11@3Tz7t~C2VDmeS}L1a&Y`H(X;Q$T$K=h7A$sM{6&D1gVzs<
zUTYvJcI)94S!HqA7mpu4dH8dpTRs-Qc;(i;>mph>e|t5-&>s`MT<4L9un4&BN_?X7
zQb^b9heW5HP1SvV19OEw#98sWo<8oUJTJ4*czjFf0#^N{hPIy7PkCMxU~l6X2J+m^
zG3NgTd43w?IlNGwKbx259ceoN!KM1H#$1r+B}ks*fG4yJ=bpY&F#u_9{1Wqm=9&DK
zWayy^vV)<?V1=OL(a{kx2?<Fl8O0yDVTj@80N7~|Nz?EwYTyi*B~QmmJ^JakGTvoi
zw|)(Df+t5cln$S}B8($XD?t#w-AtkHOX<fplIqQ54G3cKpN;nRdFPxJ?3G8hKtbyg
z$u7=m;mN*RSA>y0>7cDeWZW|^_m55=-ba!nS3vul$>XB8939KkvZ~2hYoRkBwI*ET
zG{Q?u^2pVkknj+hG-)ugl0<I(4Z7Jk*grHpIx+%}(M|RofL;(y$@D|KkXqxTM}|+B
zm0s0fgancu?HwHr?CD)1{(xxLuY=hQ*3zt7OY@(NwO_xbBBSEVx3P{lrIeJGW=Cg!
z9qU+5T1IYBft6YL+*qe#{B1w@=iBH<e;sSEgQJ79-m{yjU&s2<z|_uJ-TkfG*Rhgb
ztKgjC@DAaBk2P4^$Spi5_<uN7hHqmv{@)Fh_(i|J_sf^zZv*Yp$rvFL20J^x4z%cj
z>ieXOMBleXa|0c|uOz4NOznk2z}JDkm4B?FDjSF^{W{QeS#b$D1@qT--v;U+D<o+1
z{GRpS1N~(F+``Gq=|3Lm>!x`FP5M4ic4K6isE4XZ4oh?(dw3fNEhew12;aphzL9^c
zgt=>V-|PwI8QqH)&mPEM^MM#{$-K67ad&gWxEp#Hc*0(=H_FEc>x=b+{m}sdfq|G0
z*kE)>NN6Y=hWhvs4mXUzMlwW2Mflk3%L{r!^gOo=d?FK5;WSiwI-CJ#qO!8!Y&ZwX
zh4bKibU{I3AzXwiE{03sQdC(PrW{j&s;tCR8C1hHhP4KD^tJg(p*Hs~c|Z(2SG7DN
z5;F?mB8YN0R0e~iA#gBUjjE}^)?(`5dMqd=sHP@^W^4<pwbh^v+YWaybhebH1X)V+
zxI+vl<?KR}GKwnTQn(CTj;(+zu~k^Wg{{SY?~QFXXu-4^wlRF}Yb#CgQoZC3F`ifT
zP0Yxv{?di*hI=r**gm))Gk_gL4Gm$3F(ataQS2CofC5+b<5&`EV&cst!_*Y1uRPLJ
z#2sR~Y8n`mUeM6n-;Z6W4|W`b^ubJGrcl$<m>I)ab29xbu_4_}hQ|$Jkhb!P&M0i`
z`@1g|>5Cb|&hb(DV!!u&1NxGhGJ>A+xI&CPQl`GKnMExNJNqLscE(`V5_Fzu$qH5x
zaRm{-Vdj^RUD5`FzVHy{AH48<m#sk0$@ZKOwacy$6OV*dU}8>b`@nZr81$q<`WAGZ
z`kWW8!H0M(Z5x!7TmE?f^PTg@*v=!h0X=8B3!?P-fx9OZ972=xD!yQTq=di42s4SD
z>t`@)Po|scD~dG{0=}Mk;QTQ)zq)(yAAHzxHWH~X%<|Q(3wySly8iS{P!B@tK&G1=
zD2=xgcZHbGJ#mXjFRbYu{LV-T4?MnsP!{L-NJib(-%WN8znia}j*{SY!?1D^X4VM+
z43{U`-2m(tRNh5p6xH<&{bQ_b!OFVEt|6hpfgz_ia_+Ky2fH)6Ibt43U-6io#Q})X
zswC%IVBD8Ay<#$p8wY+&40wD+%4M7Iu+Wf@;Gi%in2VKD(9Xln)fwmLU~l{CP%sX}
zj!>KWPM*gFVz`3wjms`+8o+$d516=WoS1k|BQ7fZ<3|7!9InI-bFJF6S^u4@3*O1m
z-qzOXo<R7d1Hc)tPxHOU;|wwL2pRb$<dn7y4u2mFJJ{fjk7~XQij9hjjEF#73X0hZ
zZ(hy03*+hLg2y@9+u6K*Yp(d{i~U^g`ak4#21z9TCh${UdE3z6fu$!BNfSL+9I-Ks
z(NU3+;U9rln9XZAe>3p}1H(IkfxWe|e4~FM+YZUbmh9jcmz_aMNmvIb=T~%o9~%>C
zVrqK2;6g}z3^tY_COQ&$6>g5%%+9$<z{lNfZg@79W~Rmld#uKhESqZ22~+2D29rX@
zE;O~E@-s~F2`2E6CZ?xnW~PH~e2k5Wi%&?1k55dFijIizJ-&G}=ccp2iyL{m<MD1z
zV32R*&&vyNvdGNLWqf|5F26Ih;-sQecv@jq*T@Ls94mn^J~=%DFsGwMBcfyA1o+eT
zXv>>NF^LI^TQ+lSk;NUuIs4+S|8>jK$=2qr;S0=Nu5~K~Y(PqP7e*TjgR^kvfonuY
zQB4m8@C1QCnwkTw+Qu0f9q$yHn3SBZ_Z#Qt-LmJmZQgv=%RlJ;8N-{qIJh=*>pR$3
zTUxw%v27hYGyhwF*;^d<MiiWlv(G%DGfV3FMk%A_ocIdapv!qaIl=4Xeyn#=x-=&k
z@`g?DW=<h3)%Q0z**9=*=Hl97?r39eWnuPg*QT{=m?WpIDDx-5<~oSx1y!%u?9zq-
zEWkt~Zo<>6W<I|++aUAq<>@UP`!QMg1Dr;iX*X>=a(O#;Gsxmgukddz-&mT<aI9U;
z#;A^f4OJxJZUV4N+P?8QWsQR{IK#BWsi_%&#yT12>UnhA9&X?W_pMjw%r>JqISc?0
z+vYzM?H=<#mgZi^zJ_h(`dCYVG*Xr9CIbd5fb~nvD{mei14)OTpt!{_)8ymkVaBx?
z%Z1(yz}|viSUFD}0VC$vfFP_mG+_Zw>sW27&mA5-#3*bMn3P}9Is%-bBaVY~10an3
z6(8I^JYMhMG~%+}%)V{UA3FgQ0=Ie7dIW@p<rxA(tk3X&z=H#+d(AR9rLeMn6hojP
z5+}fTK&nk7WoEg%zw^{Tw~51$%X~A_hK-yYJg+s>cs60Vm^n9XU|$W8R<I|}Ed`k$
zo}I>lsVQX>npRZRIYt0e8#NBFR?o~%w|E9tCcAie`Z&HgyM7}lhRba8ijAU|w{6(1
z?us|M2;N}k+_;{7H7fvQ7JNfl9<oDKFX5mSJhG1A8O7C~#|TKZfhIB2>t<)t@Xj&S
ziSF;bygc2lZyw^>1Tw&6Gt0)ab}n{j_R6_B*uxwct`z`t&8n3vRxmTM6`503j=TsR
ze&FTFyUvlBCAHlIqy$0}m}%zOp&(}$*UXv}Z?OG1=<Vz8W&T8rXXkI*xVM0?adL9}
zZtmvl_SV$V-rn$ct}R=*I61j@@|-=#d*R~63+MGs=cZbefgldl`iJh(*`;;82snxa
z&{<}Bg245@XGTrlM;}j&*II8Mzkon@qZjw(rNpjWICuIlt@r-0-v(bFUt5u#fAUG(
zd8B3?6cv}0mLD&7L8{-BOgG(C7;7$s1G)U%GcKpRp&vVrCV`>=&!9<7dG4?agXgE3
z>dcStJPo}zd;9u<%i@5*03Q#hkHw{BW##1+6^-|Kj+xXC&cbA-+387g<1-0=$y`%p
z?v=#9y@nvG`6T33Gz=gM83ce=wI@|2Ik~vHdPG*#S7Zdbds=vLdwT_zS5;P2l$V!Q
zIvv&&(rhD7O^}F$$x3<osQ#yJ2;e|zqLU<u!xde>Px+Ni!{d|{6<kWKDR;}Oh;jlK
z?;gGx^|h7RVO{`}%QK1sSXNq^dpI^r=`4;gHBKbfNy;VklHR^FrOdr#7io~F0)~Of
zg;gyhlx+b75ZSYwy(-H>@vZ>U<70VURYYd2kM|p|&7L78#lXkXlG;nQ<UZfaqM4(F
z1`*ke{?YMh0px6rRHb?;@;E^ZqGrLVMb)iil+_!a+ziTWvYSgpO<{nG8-nT+uY16%
zrY1ei-`C621R#5cRhE^OlvF=dAkR$K!Y4ISuiVWW7#ktxU!F3d%*{04`#g?dT3xpe
zO)shGAi#4Q19*lj!VT~CsWvYF3BfzJyS&GETpAl2$}?j_{e6AC4ZS%1O3D!MO4HNi
z$;s)lqz5Nn6b*sRH?i<q4+2i8&kTHW+7YZ<H|@hSOKUrclnv7Fpn6ONxZ!c{GHMG$
zo!va#?p=1gWOCM}q`I-8p`r+{<LLk18}?e~8D5Uy7gsnQB2JLT$4Q-GWkaLz2%1<X
zSA`IaH)e;t;&TKuSq>MKU0&BUj_mv3sS7hie-E59&MUX3G}_fk`dnx;Z&|=`o2bO1
zy2j4?C$C8Ax(9#=eJIN>1sAtv-iJF$<3z$3VHjN60G{clC&>stsU;^|>oOR?DJ8d<
zoQk?`5@pMDVR|SyzzOe+_sp)T47_+gg4}efoaAuE@x9-N*z|KJMBa%Xmof8s@ADzC
zw79saH26f>B;{_-XnSpOX2Qn+JE;#Qb5lGL768FN`}kd4US&fs2|=fyp6QASb;85W
zC)`uLPbk!p$#uuer~1`J+`Ya0ULW!~o;Z=Oe)9YyN3R^<d{J@C#b{7puy^=RpE`B&
z<f)S<PRYh1@Kc=yF(x7a{^CoYg#4<;0gy46DJD>MXPYAd0bn@x=BWN8d74~#v}$s)
z`L?2`cYu(>pv?8@8S-H8%@b1YnFR&;1<AJ#9yoAt@AfSlR<C5Hr=_L)EepxY>8_$U
zOL0fA%4ql{6;?M5BJhkLC1+=o-NT$<{9b2g2RXIznW@>bBb5{5Q#ryfy*!QwlS7ZW
zk|#*h<nkB1qMDZWc$e1?cCExR(lF4|W9U%3lFcX+J<&k|_|C5vm|RrTJOTp4jCejv
zjxqh<f`jpYIlCDOf1H_^E<9XCA`m8n1u$yIduO_DUTvEO=W?7}p)V??q^^s3#>K?U
z%*4dN0KjQz52PUI{bgXI2t2=P6r5I4+cJuof~Qenah#>ixb5wR!{84(JIg$5o1Dx&
zTs1yAIyPo6aZH^wJsEJsnhf$}bd)$#^Y)H}f`%Li(;PNEmJW3`%M65Nup$NQARQnE
zF^kZQ(z-SRJh!W7n4RqsvT(!$^grCpFZhg+GLAHpCrJe2(BlK8Q`1xJH*R&2#>PfR
z#z^FD*Yk(29AJi-(2SI*(9+W0E}221K3tvVbC1U!V&Rdn3C}FA>lmM!LbmXjS$g74
zLwzS4z~AStEYwI$+Vj#rD5GJF{6J-FdU9gS=afI0K$;{ECYvhA-9EgJnURT+fr1X;
z8I_x75%|&CjDW|d?ZH}h+c7G;qTw@XYVHDo*6Kdykq3-hi^n@VUeG5NXg|6qdreH{
z!Ku8dNqAy?{q<*4BYB>hx1{c4e2k7Cqh(@5T!-oCX;CQJO<J91l!}lQ^n%YGVm__l
z5|dli&^0l4)k2qk-1LctD~vme$Ghqr%NlAbNssn((C2+lAWu$^NW<<YWJUO;lrcW(
z&0UwdRx>anp3~9Mpjdb9ME(A5z>HE2a>6t&+e3_}?t8@LS2uP~B9~H(WODgM%yS8Q
zJPfjCr<_Rd=<v|sK!1TO&*K6zNEKq`lV=vbu{rg9L!;4uF)>hL0@E>WJ1!)AnC7pT
zDKknX$cxYu0N7`rcqbOtH1&acZU~kq`fe?0^+QrFSR5_hUgYT{c4Ym~sL%N$@@X?9
z!a!+BOWzo>*Pp(*4MPvn!L&^1QxZ3>iLo(AW+03FM0<X;@l_BHK9%=LMYYZSVD=c!
zV#o{=?pKvLSe`i>;Lzrm?58m!dq`=Qw4!u)CF6;p!j2Bu-@bEK>Gp|3dv@>oW9N?F
zx9;V=e3}2?8V*c8fs!VZorSS)#Oxua%bEcxC3P)BGawcQWQM82r-#{~bvgz(9w&9d
zPo$BNVZU>j?82fvTXE5k1H)teT6-?SRwh_ojh9azDBhM372rE}^7!!+CypOIe71{H
zSGtN5>~4Tq2*5#UrFAVM0NIGlFlfNLkp|*6!Qwda_VO}ygo-DZuz26Jyu5-uM{(hR
zFFiWft|+$}kukF?z(#q3FwoOsbK+PlvSH{c{e+XUhZuxRLNm%6+QtlKjmb>oS;8yO
zw9p<aJO;PR*+Nvy^OCfO2i`FvE-x=PFANqEc7LH6e*J3h#Prl8k|pEg1i~0RN<TK@
zc2@UzH3-8@UwN{d9FHBuaLqD2tD>QufCX7j^I3B(OpAt&**arzhg>ndr&RHH91dKP
zq-N#hq`b%L3GFfKN|rwrHaazjOC%6R!Mq&AUognHlsgNeFf&k@>UD?57Ob3-woy4%
zjh*9|Su--4ly!z4V59jEY_v1R%+&z*hm-4vm<YTR&c)$|?$k)mQy#~z$%#2wP)o-8
zoG<HVbxTLhm{8_-`um4xY{8m#8yAyT-Sl~4cGiMS)9(2jOiPERyY$8xBr?j`*$9Vr
za&&Nnaol(Z88sq#v`p(S&Blp2(6Q06Znw+2IbDP&?<nj1NG;g&Ua|%IJw?~Jg4*V;
z$yrM>dZtK!H9)07^I-7!w+NE_i?La74QzZ=xnklgP@BsooxIP)G1zR9vSVn-4t;$Y
zjQg~*XCg@1-f3$xdMH7L32_hFq3Y;tjQ}Y=8kwD%CN|rimCqkXaELXgym|$l#L-cQ
zSK|l}u_-rPhYtW<c<P%3GPHO4Eg9YBcb*PIOAB$_vvaXRaPHn4o|&AO9PjYBB9R6h
zA{4#2XkFMz0CONvc9gOSXaQSU0bAsTR6uHJL(2fTmZY7jayrU{p{0Y^B&=NU7PyUg
z`#XxGGZV<!{PN+taLnjP>TNNvlAbZl2u;$}VajUXRv2R@41oA_g3>@14$j(;X(vi-
z&#XXz=q_WOo!{U#;O!I?rlu%aLF$f?69@^qCLdNdFp3#L59gm7p{(njMR7LQ0g!+}
zXl6xY+wiO{nU;`e!^euDrKf=oKCyPeo8i{uZDr-i2oMo0S3RjuF7rN*tsNdU7@;XV
zMv2hWmy$$BNq{3{7M@+z)IK_EN2VLe!wIbcF`|c72x>XG;7xGr@U}8?<T;$NF=Ah?
zCN`yI1mK{@3XV;fkQrvDy33MWZ}ZqdjMuEAa;uv=2*~}Ou_EtV+nF)63^dSI1=zs_
zZ-isV+uTwlQ;?9%B=lDlbc~J~j-Uy-=ZC?3n(nPg^_1WD7HsLH>|^q4TRxA^I*{qd
zE5kHTZvaj)LeL+wy0)&)cr1<%ZzF!6OoE9_2oyM9g9D?+Bk1vL;bvrJ4pgPRe{k|G
z#JEoeA6HlhketX2(@mf7iu+arBrXWrBB^ES0HDCke9Qlm{B_2RAv0#oWCYB#TZIVF
zU`=Mg)AIo6q@sIbQGILI1fI+|P!#+|d<Q!-D7l+a5bIF|JyTnpi;L~K=Ur_S$?Z#5
zcW>Xo&=`gY6X?dqCbAzSP*&Hv>>!o10POrjujG=3w(dz6GEZCD`!@>5x2$0T>m&^X
zu^hSe5;itEa{1{i4PC5>#al;LFTdcZw8GMg>bl03_Rsy9PlG9IX+ut!)<pnz_WAqN
zvc|UFDOd8LsfM&bTV2`X+ctoUTV_UD8uY5Ym;O3<^vroae*P<$`Ocp^bNa-Qqi6W9
z%PFhqnd7bGy%8)zQ(got0I)8q1*TUtwfE1slMl}H6vTSlVO8%-Tsd`U|6j*>1tssj
zg5UbY)e)vfyP7I;lcNIPIhyOMJdzXVzrZUVU`m-U1<@u5(q)~H%&O-0ff-LS`($@v
z(#QACb{20;OwBB9oqfWR>W1yeG~)v!rj)5s6lX00`Uqe@W>>d#4A1(KS5Ay{H&zv7
z=9bm9_l-^YAj?^2NrJ;QaF~#JWL|Ac=g4dw$iB(XrAf{=IjlkU*~H}6wSFF>ygk)j
zp6nsVZ3QuLNIJz8Hne>q%)Q@RndYr@5WLTQ+cmMcvAt`2wjP}4{^|_BN5{e2f8KeQ
zT-wy$O`^O#Sey0XC3u_h*h8Px^5%}7i3afQa9vKQ##!+0@fZH-70n&JlLoU@NF8j*
z4c9+!1u>s}9h6bg*xWumHdaeuAWaU|=SCRugAV7lgVQqOg8c(AK~}+5A%3CeVT_^S
z2`O0_5oUs*oe%pVz|HwxSQ?yRkcr8{W*g+7a&ryx4D;avqe7!1Y_VyHO({c8Vz~eN
zU~5s}uizUmm$1x|*5UbgZJ}>BZOvywXBno5HG$p^5-ThrmRk;<VHw3$pT`J<h3<pL
zAv?^%a1W*R77z=w+*_a6oYLAZ0^y(cf(>R9D3^|(-ap%B0Wq^my$MLnuc+@OP*CCd
z2PRUk1k?Rh4_ZJ>8ztTbgA3QjK5!iNr@O?7b9=a8t=-_jowAN$X(iRogWssJa|dE)
zj3{mr8*{?3e_23`yOmv{vdU^(hp^v{GeC|rm@%IXM-s9*FUtG~aB<Izcd@w@4ILvy
zqQSTUaM57Wa0)Y>fNY&X*2dbN0bqY=`hZ#9-a7^p&Bo10h7*aC^rVrtq6DYQp!GQR
zLuPF!NJq?c?F_^CNPkB~vYQxaIBywS*48~RLUNq6nXn?g9XA6LpK)}cx3ezW=NA1N
zh*88nyS}ZXy{#SB;o6RCGi_xAm7=viKlmPtImAdWA5v6XS6xw#DRnM$Eq5w2EM+V!
zud1ysjCj7m9HM7>7+F+NT7oUE0Z;mplG4Ix4GwdNmhNGAeu-sq7I@MY<wvWme*@9T
zhh!TR*%gPC*cBTTp|b<!nBPEX3IB{j<09IO0DD6W3}@=YFfGQ=J|M%Wh_*28-E~@U
z$Yrmze4`?C2JV4Wu@GA70WQO^2wj-sDrf<rFSw<EHk7||xe!X(AG}|XjJsq3(H*w`
zlvh}2P=vC*30iL2VvFbs3-dqOp8|dMTgK-a6{28a&>{>Q7NYYKtdD~Cw;IOg7!}f6
z%1GUozjH57iSDj~>`hrq<bXJ{z2Jb2IuY66fcMWIJbC$AJx_y9P376c7k=P?oEXC$
z77*>K7onL2hJ|z)&YD`fa5~n|fF6s{)7Es!Fes!g$cfV71P9Sb2c+j?3*bV!%n!EO
zx_Y_#40^iSwn3S|-vV@Ih%&P!gywNb%zIOiT4+{eT!79?v^{ABp;ssdq`~?21!0AT
z1*Sy+As?OYue914qFt}-my~0ipH+Y=DljNA&Zo^yegBlp2BKdjZXOt)oMxS2o#~fh
znvPAQOGym2l-ghi(W5r<DQOs*nV378y)m^gF*e2;85>}+bO!p5FLR=uAQ}`c^ShO?
z%qRvL3utD6$A1;W|0;(6RSXwX3<ooUa3<>aWnN(&0@DWnCyHTheiYs=Jg25M=Tmll
zUD2li^EV$d>nHwW#qg6|a9nXyduvNeW@2J;O+8%4SYMg;!3~c54;8~=t;D95R`6(P
zEyg6T%&o1jtE;K5s;nsg_&np+f+5>DvCt-<t)sQAwXLnSwXGDBwkjpLvc9girn<7S
zyt2v{oAYbEkcpxfx_ec3v>CRe+gdv^;f&Sk8C4DSwKV{zqP(m;-`lC@7g`}R*wqiV
z>7=)|wYM8~!0mAM+N{jXn#KminW{?UUTblxe$}EvAqTiF7#Zm9Y;DWXtnC0m9UYyN
zM@MG^oVzY3C#$HbffAvrin6leqQXMekcmaq!lMAM|4VCgQ`47VtL8QYu=6w6oOgci
z>})H^FUZd;&MU1&T&zW0EKQF~iFSW(GP{Uec#J?8=xk|dZEgAzY1P!)3S0z;oeiaV
z4P9L|MMZ^0)y>6?jZF;&8F`fev%Dy$Alb|1r8-r;a4Uh(+uGdN*3!_K^~9&CwXLQF
zxqzrn&&bNJDlaN7sf63tRhQJ2WT&QlN-Uj=WTvkR{*fAWz3^mLYg1!;dqZ2kgL`CK
zTYX}DdGnX<;<U`HoV>!~(z3dyhPKMQoUDxW)TG1;aE<|HhQGU$!vhRez3@~o@Ug9<
zt+^~P!sAm-UP5GKLS=VTW?E);UO`bwSp|}DMfthenFwflVHE%^DN68gvbDO4qoy04
z8E$O{8|C)ay72H%egR=&A0wk;^UAVQ(kZB=0JWm5r0^SRe0)wtPGV-#dpDe|rIAb)
zH4%}!r>(8ArK6)gGbHX){QIELu!yLbxWps`HaEYp7_3a3rNsy=B?9rWQHimk!T#Rv
zcsol|)dwVM$|5guq_eG~p}C{8Dk(lbF)1!6<QsBYMpjOK0XSbEl!XO(IRH5=B?%x$
zd<+c^@CFWBm|*U_T|{mig4<6wHg~qhCT7GZCZ~Ri3=0R)37?WvGZ3!}3X4F>7v$%F
zP-KB5NQ$OF`+K=L*;*RI8aMN)>yPKh``g<(S{gnV2gK%NAfLBN{}dAu6&wH6@!Y(E
z{KEYFyqwa)%+&O<+Ul~D$cV7eAU{u6CmRbRea-voi)fKsd%?_VtLumjj7-W+M-VeJ
zGm_#du7i}z&H;M~uH2l$`o`Mqw1V2I%94oiu#gY$0l1x|2}WC0qKdjGd9fdWw>MP;
zg+@lF=VemBfy2m|OHWG&=-D|r+1XjywGH+4HC3SQl|+RG__#Y7JP_r(aFS>LAKdHN
zWT~o>T%-}C%(NAN42h1*$j{A0-~nV_UVcGAzCrFbfSyqXDg;u+Dobo{3ksa!IdVnW
z*y^pVy^HbgRr|UY7A3h!BqFFdoz0oaA3=)5XA~6VWzAvd=H&x$7;LO)!TBt$##C*n
ztf;7$f*_^hFT|;_p0<XHs-P1)bpQCYuq+9a){TE@@Ay(0m5~@086BIDmJfikGQqx$
zHWzrFZ&ZNFFThl7tOQfL#u1X+Dp5Jz+um4RQsTSkfNA0>Q)=qus)+%Bo8gs|5&sd%
z>*O4`kS0G50HbpOvT;6FUU3x&L`6k;MLy)0dXYt~rLCr{FlhS$>(~sLt5h{g&e4vJ
zFNxkE8R@YRz~N6x83jeT;IaY<N3LleO>TZArea-rc@wu9x!ro>R_~Ic5RQHL_~dl#
zMk*>L*Tlr+<ak$mSFCSfbY@yC2y)`5<n%0g=w*IMK^_KNH)C>Xb8_-4E8ueWh8riR
zhk7$*m;~(C@pvR8C#5;9nOsz*+}hXq`Qv;45Aj)PanWF^q{QD^i-xcj#l=Nn>BucC
z&WCfcIjC}gzOJlRhjpx{qqWBE6a%mKr{tuhH2jv%MRdwdQ-sd8KtI2LkWX3Z3DL2i
z;%;uxTmO*Fs;USsVJ$B4FbFR%%FWKn&dRR<1gvE>R?z3qEwvRT35Gt2$#4=n&3#Yd
zqB><yQ-GhZe?VwTR_3R;(95e_8dhc6taL2_D?my8C6*n$hACwrX>!X;%gf42tK8AW
zt@V|~$OKMJOHa?p2|N+Lh)%hOR2v-P{XQTtG$lLNi+lAuaxHUepUTFNysYfJY&QC>
zCc9S&;PMKxvJ1-KQufMVmZ;|X>awEz<WOH18xvhsx!)YA>y&$@r|Tm=diwYUeh5i4
zraN9TGhIxd)K?>XC^0J|-w5SE>pv7F&b(eOBoka|tSc#x+hiMM`%?TMI~^?=O+&}b
zw(jVA>N+J4qV_d?414GO-ajzN9wkSd7#+(*Cv>!??h{YVDC9jobZqBfe_xg9Zkme$
zh>lyDeiVjQGI8!Xep&4L^&8j3M5U?gl$R(vWxoGM4=*2(K;8nPeZzfyiKv*y>e_c)
zPt%fCI8Az>b%xrS8e0Q-nfcs4<>qBt8>wsRX})^;Kv72Ony9eQO=?o*<vFP`#WVEX
zJ1<{9{}AKfZF@U9!lCf0lEPwLE;DWBHe&NZj-0kykgMfh0_)Ekf6UBHG*y4~?2!^c
zzb+;sboF-HqFN<yfkmXJyC=X82oyMz-O>;Mg%syzrl-jrS}Qd&(r1HG{#;p7ke!y6
z>vMbGd9@EAFa=%qCW0;~crR};x$@%dY?pr2J9iI2@ILr0hi-YL2P&d8H#0RY@hFr6
zHi1QZcI8wQ<fJF3WaLLZWP;>uUp;+zUs3kf4KY#Ss{(?mWxo(C&lB{cy`2Grx6k`f
zDXz!@d+3a!y0w2w{$C>9gFT&%MvQv3`MEjy32$!f-Lreu-PcbZ0{3r8h$Hw{`1P6=
zmn_e{bNy)I>E`jy+sDs~Q!Lv<<kX=(TR8tX%n&o!`?;+t@sBfQnYgEXJAOMNp>gAP
z>xats6l8AR5Em5@ynN}3sOh4T<+<$FaV}<*_;?4ZqwPKgdperwJi5kmrF-;CdsAJB
z2JK#swZ9*`q3IYJ&B?2J|E~OPfGu*B|HjLw7jJqmB3Yg%ldE4v`RL)@kk2%E`&`--
zll<vZVq${JUetx~zP7rmvJhTg1#L^051{;G81CIul#`acE-oVS5Q}rxy(k;KsAjpU
z*TMe7b9Fa>4xD%0c_Is&wCYpx3l`|myQYewbbs&A_>?p_ojqsgpZ68zZcBlwBx3C8
z<>`Ly>a)znWJ`Kdu%3sskRj~GfOu}su8@OC+LK|;CLgT8_J?&rR!UNGy!`G12mjhd
zw}q3FgJaVs4$gf7QgZjjj-1xc8kt^1xja5qV*N^#@4AJnE8@7v6L!;#q@+);Rw!o{
z6z1yh<kpM-loEFtS|k5bS@EX0z=czX_wU@YaSaPS294adU)e@oyX5V6d@aexCuIw;
z-P}F!f;)Xv-<@2q?i-qsn^&0sc0ZR|MD*pon=jOoXC{cFLw((!+gloI!QMaXQ%smF
z9c?W&5tCy)OY7>zOBZDvTo7!}H~TI<Wk2B&;O!NY2<L9ki`Ci1_4uTm|K80}L&N<&
zU)q`*YO6p6&dE$mO?t>ILR&~x#pLa@61{klkMEw7D}wE<zK&JtohNvB`KD%OXQu}H
zsO^Lvcg3A#a%}JY0(O?b-;x3ZI6;X`0=Fh{5gBt0DNFgvg$oz?9szKG?yhO<1H13>
z@NoC=3W-Cif)D<PG;uIh5K=AcY;8iI3v&T<?EN+3E-^d(rm0Jr==S%wF2fgS_#W9|
zT+puX++DG5^zQC%U=(h!`xe{<vBAln>|2m{8d!_~Y+iPHYShCuqHZy%$E_!+ikZwa
z#g?Lc=P#VUAZLkjM!C2cxSF_aapL3e85{nR{{Vd|qP7wN%SaD-uv++CRBDQl8i|^q
z$uj)uwcten#w%%nbHO-cTufZK-JGtR`#jRy(^ja$df<I|QC@atrq7L)VqTG{$;pZ`
z1ZtutYx{@${1<u8UpOnG<>-vZW1UT1wm1kLZyW6H>}V>4H~o$)0M~ggr&cR^N2Mes
zC97Q=q9$z8%~X3R@Lz<_qt9M>X={Ktb>8S=Cvdo}_j5bQoILX#oMxG+mVaz{?Hikd
zNun{|*H2B^WSuC%-4VRV%X|LpdF3~FJd88LuYY^#P|p`iYFA|2A6&1i$@Qnv`-Egn
z68e)9#~?Lrla-L~c<(A7?>S!HGt#<tcyru(yfyE^;f|KZy6W=cqIBo8Ygh7Ge@IF;
zNTR_r5vXaKY@_)ukA(Ox@SZz&>e3@)Cp_$Ah+FT3vpREN41uaBDag%9_PBb(F&u$H
zr{K`zROQXpgktZPH?CX+UY$EBu5RXl#~C@X<19}e9zvi>!RgCLOYrxKOingTLZ>>c
z9H6Rit{txm#mb3L96NpbhN_7j9*4s^t-)FHoa&=s<>zFiCM72%BpWB8)9p6ZP!l+J
zOgAUtUPxWN2r}#3>60SQjVys*I438Z<=#uZ^)(c?(o-<WCQ0ZF+Z}1t^vzuZC7~7%
zBt$MDKxa<!$-XwRvU9@Yt+!vuNlHwJkBg0tjEX@v#F#WVl`bVE(~c*Ys=nEt;rHf=
zq?qvK3l}f&o;`g@P6hkM+MH|C1wH{`aS3VJJIc>gG%;3qH?S8A2nr34dwa@-s=hhh
zm=SER2YeF-Yc&6*3+K-ZN<ZM)#<iJ?YwNb{Teom-+OTfzDz;S{w(mW1PEb-wdcP%g
zeY3YH-q*oM?V+5Mn6R*rh}ezWk2H)O1CyG@Cx_Z9a}z?m>`k?wDqQD3zMGq4!%kbO
z`sP$mQA%WhyQ8(G*&B<uj_!WpDfJ_EWEw)xAa#9nw5O@MC_BHRzN4S;Uw!kx`sRQ2
z%?0#L<sbCTSBSnT_dnM+ul-8jJWoa6<guf!Z|<}B-|Cy%)b&k+|3u%^rs$iu7S}f)
zETC`NoS>#}-lOQ758hMJH^t2Usc%|HQ1s0W7w@SXni-nHW)7y1*&7oJV`C$%A!J~L
z#bW5NdXFe7CmKb|%wo6_#}dnoqW`bZ`Cp;)ze4B#Lg*Z=&Q1t>kGJ;<j?1nd`=1D%
z9rZ<t@ue+Y{e6Q&1HB#f1yNDCwO=OxQ=yZoEH=NQV_;->Xb2u=9UABdkAa@X!i?a;
z|4is)X!5HX93C1ThKHbGcmy>(1ozYQ_4dL&=&sUtHNRFm>Bor;F}Xuy#={09tONc1
zpl?r4cTZ1laQ)OT1x`jp;2cZJ>=`o#)Wevu)uSVW2nayw?(XX8$W9pkg}TW^Bz9*-
zerOmT0dLTZfT4|S7#^d1gmrLW4yvcStLw{`#-NTxB~BIsVeoU7pV{jtuYLMQ5t)(!
zpdmjaSi;(|k%8}iefiSW9hf(@h`za!K<G>JP*GOC_gp<{6rj<Kjv^mm#Ef!|5XQ%e
zM2dTJfWW<;?k`{3BSIIGH-UROwlAbrp3AGfiWo*%;4$Dg@(%$szJ6?&FbKvw1d<2<
zc6R~5&mGZTRJF}@grSeRO1E@XZ)!cpeI6bj8Ad){Nq|SUjuFO)<0KMs82Mi(hLJz2
zA0FzP8};YU9i3sG)U-_=5I|pzd$(a-sb|k0Hg^Nefq{`x<RjDo8Nr+w9~&DYP(EV{
zK#@G@g1^vz?r7}@4wzY3+&l}qM`^#1($-hG^->1g**i4Y-#;)oGB!3cifkp3|1f28
zVw^bs6?J$3i6?Niv!kuK$v=jgy2)Lq4a+O(>pzp0d!ky@)7#evP?5n>P=TxPB*z5l
z8!8gkZp7Ws9c?X5m5!AQtD69JC`b!);}wi~A*k?L&Af9CcW?;7rNjU`!7=_F6{G-?
zQC|?$+Eg4>ag&?aWTuO~@f3r3dO=xDP2H`%AK(Iqhri;&B(8~Xp9BU$pdk0pAvZVH
zl=_5H6E}Y+5({BHjO<+ly?a6us%q*QPDP*+4Gazqe~krl;^1+PIiG>QgI}Enrwu?C
zXWCa&7dN@b6Lj_9$C8*=@=5|Sn(7+rhVM&8N0E91vJf0%M5IHe*zf?{y9(5<zP=t1
z;?}0d>f)Rrk41FN^&$HDu*S8Q_mo~K2*_(_XliNezDZ~pf=AH^Fbuf4K;{5fk&FPD
zh7_hAN>;Sgm*=P3)Kix=+2S$!u=Z_f*~hO`B?V+&Yhtw4X{c$x4a{in=^q>(K>`lq
z3_=X|uSX_uUsp$SU1cKfwY-Gjxg-0wtz)6CYF;9h!1^%e@g=FJFH~RM6p(zZuC1k|
zt*xc0q4pZ%6c8Sll2uq%SyNY6jmYbWoE4;fN8;?BoyV^$KYjA};Uj5|71V^ywIouv
zmcBkl<FeqR=dWJBk`uUk`>CP!UL73-UqfA8O<h~x(8SmP*3;2aSABg6f+Rm?78Pg2
zg}!%jQro%l#&6VR%~5MT7^^CB;l|6Cs;^b=3tthHQPI`GXk&E@b!h;Bp(eZbJxH8W
zAhIMmD#+W};nimD+q!$G>X{n|aayp!LutWFw^dYBU%ytledVf%^h+H8X{G~d!&(?k
zb}d!N#_z-mg@}*u-5fO5b1P^YoE4-hWNxg$zy^0^6#1^)0f1ndJQlkua9l)LQw!EM
z)u91FHqczF$8o<tNp0;$9al%4)m!fC!Uj_7si>G+5f$?bUf1A`+`XF@g&wFPpc?9m
zJD^?s!t&46G_(zM47D+u>oj!E9<InrcI9U{`jBn=V?9_OtHiRng2^0+!OF_ty?6bh
z$OHKG8a0jACsxza91;=`5SLYcuBNN6V+4@bYiMX+XUR{F4)ayrL$~iKK-S0JXJ1Uc
z{C%q0K<~DKqS9T_i^583uhmtLu6?@p_KI_|!dC<YL~lumKgH;S7(*bwtN{Ktlo%W8
z=Ycbnex`@fM`IpsUR1jL!(B^8LE+B*yTX^Q%4<B^yV5v`)nAL@w#r=z!7IXB8P@L<
zSI6ptl!i574R%c>lwWwjJ11*n7{*|+1_s8j{#Z=8+})}wdq-B`?*03sm#zw~Wi@Y%
zXY$IBXL+il_UfTD1Knm7Zianwy80lUVU2a_nosE82EX@kvNqL!{Y+U=`nu5B4T~t3
zyQc}RvUibdzXuP*4xkQ3)Kmu3xh4gl*`lhgr7Htr&{nw)=NVW}KGB9XSk%=uUa`G0
ze|qisZ>%T`L`TECn&a>y!X+P~{bkDCxdl$E(gSIfSZP^)o)_9NGR$E+kA{{W&*8!Y
zTeDIV{U2^c?|-17rKPE<@jFC=X4`*7LF0{$BOYgGX`cBD;j&mwLF%@w;$5XXd-*c6
zQ<EG~R)OB$>g;@)>U0K`Ml?#P;Xwg@+6S3LKV;^m$2hozW|ror#)p6KadWh>Ff~k}
zDqJGy<SN?-Qnzl)E8bNW+oYZp9r*?_@xVLS-&`Xh#*kJVw`-k8n6C%U-tO7Kl>#2c
zpS#;ivXbK?Lj%0saduW_rUn^{3zyX)Mp9BBKEVIof4PJNz>vP9wYjmuIqub03vyG{
zAn}jy@OBnPSmS4>I4_xI)Mh8gM}-FZc;M}=-x!-36;c;2F#!L3S3uGo2`Onna9@H|
z-rfB*O3%j32!ql49rDUc|Kz)k+sVz|3gn`Jspcg#q*0a>7a1Dp>*4J1*1`m9Vo~u+
z;nK6jO;l1!T1HOcJ`cNr-9u>ac~ONI7*p;G=~+p!ArI)~+yRuSp6qe1%^VwS(_<q-
zfcwr4HkPJ_7(JU`36~!~Wxo&uBao3*lxI6`_T=!c?VH)xaBQc=XQjl32fgLm?`Zl!
zVE?9#zn>60b}%nGJlG!u2SLZ`VqnJ(>cXYLEHAmhvm{XJn#9dpw`K2KLfzF@eR5Cc
zI{z_-(<xaAk->hhH_=<xtlYTcxcEIat&LBT!h-y~-0>hZ#ujdPZDZfXmCJg3VJa+s
zT@vJvjNBiqwPAfdJzZU8E}Em(iQ#^pF1q{ooxd)xtfHd_OR@xo1ibfj!`Z*Ja1BaG
z^wlzqnqE}7?Ees#iMuO)T|)Av^lj<&I}Ne=Y<lojCe#jXKQ{++)#tBuFc>VmF^6dQ
zhxc9{&W^TL;mC))U?amth0E2Xc%M&Jy7J=JZve-og;{uwG5Q+}<X0TIbChYbvaK0b
zAJ#p;dE2(_oaj9Vuz#*Rc;w>k2QRdr$SUb&FDhHEnJV-5!0PEpi(k7TAt`n9H0x~x
zSbw`P!>Q-5R9^6}UndCyp?v^abxrZsH9@}9NB`XY8`s9QtW0POik1fT3)wQz%~(TE
zT|(^I^&1jWH+FG6$2{J-l22ag*~^zIudZ>f5!KN8^N)=u66&f-^Rv^CEJr@lg|jus
zXum#7yO?a5?E$~m(0z4HR2*PS32pdOVCB|Z3bHZ}9>FiRzf|Vmu!jHl>$W>KI_Ku3
zCB-7M2l=R&m6;(%|1$ky8tSs;+72&cbyaokCt@OE09)!jGsCf)@U7j_w`CqbfBx*T
zqRfSLkW7xpUko}4NKK(QY-eR|gwf?=I&q(6G1+oGDf2Dnwd!ll2cp8F2s-bTo01Ze
zlCacHX~p~ZZb?Z=-`FHtmgji}k`0Ld_yOcK4yh<uEk2f`%G#S2l`T60&GcYZX0>~w
zLL#D~V%M)<gRjFkV2R&v+>ii2*S7NKm8E%KfzIPX{Jq_s9RRL@#$}en54ABn7SS!&
z%#`4bv{k^KLRtK(kg$k|sF)Zm4qwAu$6VVYy6s$MepaIQHJU%okn)6-?$?)A9Db~c
zg?XsUmu$ny76uv!=HnZJf<i*Vum~(_BDO_%`|*_QluuEf(kp(~adiUa!uZ*7rXx=^
z!AAEybpeyDJ=7F~z^OgEdG(6m)vK@&N?6!PghN<FaQmTz^u(BmV0Xo}9M5g7%#0uG
zVmS{0VSO6WMP<zQ#uzPFm0s<o%+)Jb1Tcc|Rjd%l)vH4M+xEvL$3}z(zQ;Y_WLGpd
zl;>a<eXb2-^l4<MtC@5YCGLh;ZCI7=wW^{hKR<lMRA7VPCGNdRloaxEw|%soP4XH$
z_pRr;Fjk*NX%RJ(nD1hM)p?DK_kqM!{x?_F@p0`=iwXnj;)ZuHf3k;#aj*O<J=j2>
z=00^XlYX?o4U~FK;F8)a1@SBVW>?txHt$XY)zllQrj~|}4;{a!t`A_)uo4Y*A(Men
z;$wo<*HH&Z>Q8Qo3h<j;S#yzV-zNkJNeL4}-4{<aU?Z?;yT?Rb#auI96Kbjp>uRYX
z``3rkVuJkqhF4beaUYBUi-)r#$OcfEbai24eKhvYYN{G0`*ce(4iqgNEe$Z$)St+R
z3k&e`W3I69aUY9%@8yQGvj&qD1Doih4eo5BE@2LqhFNIASa8Jvu6Wd5D%}zj61>9C
z&&PELXKi6-VgNh^S95>}#$qwFu;JaER259dj;sI+wU^okda%|Xnp#?F%5pcaUlZB3
z{xHwc<0ns_Id}e&fUvlf{QZZIpFV%7@>*R-Vc#MOW^-1EgWmIJ>UxG)7%X1;7`@kz
zFC5s(y=BV}3g$YFt-tR*bdvA%Z;L6I#fkn-#_Eri?%q{;sH7k#r}#|U+&MV4g|wi8
zX|sreS&|kV<cYU^Yhh_^hxZJON^AJFg4x?#Tbxr^+0gl41@pfO=6@B;1r^MDKPZ^b
z*S&#gq=SD{FmEFYrkLMi3Z^KcU|#fGP{DNJw}8-RUH++HUa)}Z{<2w6!L&O8`s^|P
zhk|K!7*Q}`>I$aG9&o@04eAOe22n8Co-D3lYEl$T$;B1Sdx(O0(C!BX^X)M!2+b_B
zfP$&8${M0wcjq4prtd>e8;G7w*f`*41vAL}+B!Rk4z>QAyb5e;WN(NvFnnWRfi=cp
z!Ln(jN2jl;bdh83Z#0?SvDh+uGf@>UpB#Vs82Kh2<o|eG^(OBV#gf4T`9Ul-Md;i2
zI9wl{UC5Hwer-2e_)9|izJ5gu%6Z{-!s)qo`mlxDr@nrp&&rI2+h_02wXd&SxE=ZL
zbrJimlS;eQT>GIRD(yaKN;@BkN_!k7dXUsKmG=Bql=df7n#qluDeYKl?LE6G?Ko=f
zV<(Yjx*%%plaw>KB9&VEtOC-$u7X-SSq*95)=stE0%<=uNVVOQ2DD%J=hu9Evlt|R
zlGMWYHGovZ_cef2!$&6ff()c_rQS~Dg&?MA>h04~5X6>6y?yop$j$`n?K5%!pX%uW
zCrAvOK6sXDdm9g!q6eLeOBb}VbmcW*cCj6}EVQ6qJ-d|w#D|7y)#`<fl^zADQ0f2*
zoCtxo*2X5p8aoSif_}Q+{g@E`DGl!fzk=tz)&XgjHt)491hLPbm3}nP){c3v6B(fc
z^JiW0D(L+DS=Pz{-I$s8x_>A1XntUbhat@T*VFuv%MX!Lpz-+O^?gW<Nc!6*1_dAv
z@oQq=Oj3YVl@bSD#s$9531Zl==g<B7_x}m(zz_E4KkdLmHvfSA6r}z8IGGosTEJ+J
zxRkbk`N6sn;dbtq?=Qc-`Stg%Z_VG{{?=#CI;#RNGyNy@jE|dV$V*|f-R5h4O;2;H
zcS+b0BkI!slAkkw$>_=C_G7=~zf5g$`ZsLy#V`4vO)eq-tTWB8_zkJA4*vpw@UIep
z#)W!y{ueB5<uCZ@KP)9Zxp?g__*oWN-Tnou=l%shd(o2efBy3q{M_|R%0F=K7ySD_
zFDXCq`Y-s;4J;}Dgz_)=ZxDYC@_(>t%rE$r|BY`;q;9kJzbJs1r7VAdKXCB^NMpaG
z<qvEGSr+A|4_spYqQwg!OXAYflj{~QfJ<Ed$mB1J7eKD+CFbuxxhVf$YM1W+mJ!4j
z<v-cK#QdZ?i}H&Rehu+|vT40V`R`D>_3>}njP;`YdP`gWkS|lCU5wv)X)b-{S?pq$
zfwX>0T>i-9g2k@Em}8fko?Okf2>+VGCFk$lw+KI1&64vkS^$^4{QaT;o>=Pg2MVC#
zBK%8U{y+iLUxZ(AsmtFl3gD8LKTrVu7Ab({OJ4rS<nRS=xlxSPXUWSSnVd(x05XOz
zJw3T{BUS!2dCS1xzMCrlChE$-zh^y%sq*ipt~~sEHYP-s|8UPT@RMYz@(YbE1OK!Z
zResr}FMpr_np5T1TKe(_3ZM_w0{CVb%HJXda9PUVA_Z_+%HJXda9PUVA_Z_0HC_4N
zwO(oka9PS9D1gFL_z!h23;*~{D*OT?%fdgUN`?Oxb>aHov>6jB{HjyS!aw_tN&z%k
zmhwj?hc0{%lJ?!Qls_^#Yt@4M^r6c`PcB=(ApfdGK6vo2TI<dQ`8Sj=6My%@1#oBU
zGVzZJF35j)dCDIsfVURpzdE{1{L>2;z-20bpa7aK$iGbG4-`Pp1q-0@GL=6vIfP*W
zdK%YdDt}~hI@<#L3?a)!PcB`k0J5bo8-L4=1^CyOE*pQ>p#}JNG%p+f$mIq24|OdY
z|M*SRKl%BGmyLf)<)8eho6A-HkOKHm6&R(ulpnnL(PrKMSpaEFm#zGf$zlH#L1^8V
zt^AS68EgKL0L&kkkDgr4@iRYaZRRrax9t80KgV+I{t)Xv`tt;!+1;{?{G&qu;6J)t
zyFbK8(mzi?8vdpH+~3bO^@8rl1VEu>maqJQ0%S)26F=R{<tu-H--YQXeum|cKEB&W
z)*lm)hIwf}clfiVZ$SUZ&r0QQGM31`aQ`>~XxCBwqlG20p(8&`02Cef(krj?jl@s?
zBmcqWx%c(Wrj;1yCm@PJa5--Mf45m(ruqCdjEc*3@%Pp2ndeUc8fLv^o&I14#6tT$
z0Z_Cn9G7+algX*8>F4vaF4w)UZ&ty<Fpr;ZP1>)!{HxaT+q?;YV%V^J7k_iscVONG
zpkZ9Ud>6lS*1BWf1fXGD8@bH<Ra;lg=V$j?=KRm&SV23V-*lPzV>hh$UI1vA+4YyX
z{)BFvSAfvW>`KeI{X#wm4fvt&{OfKn^ZH}F>4)*J6IiaBuX8s2d>%gv&Ak2`^*^dy
z3Y%2iv~vFV*B|cqb*F#P#>9T&-@Uy1zow(}`DvNg?a*4z4alt5?u{(pcc5q{_U*jO
zrT!q+bZzJQ`Spi!HTS{W#mh$D{_MzhcIJ8f468QpJ*Skq^q>Aij8yWP?;!UY#(C=x
z-O3F+j|s>b#y9m5h)Ze%tyyoCL{9DIU}K>9d;BO`=Cxb@JS!seP!%?{u(bM>SuSM1
z>;?K+yn)po%U`?j*Y@=+^ndR^P$*hPwoN;D&I{jCRDSa8#fuj&m%;$<^QRB*-WKOO
zwu^H$)BOD}4c&@0oI4Ml;TM&>B_p?VCL=9*O@Q~v9&YxP4Cwj%v<xfRxpp2ncJ?B_
zfZ)P^UHvcERY86}-V=ZA;$F|nL`yU80uTg%iFMuP-*z8B{==T7v*Sk(AKbfR%lcK!
z3^YI70HL9!XJ%cyVe_^fJ9q6~I@`5#$M!9o*jbqwXi-1#qflr%#ucoq**9$B;NV;;
z<KWn|Vci-w7DhT+nt$8?rJ<!`U|O+~m6dJPQW+a7>&g|(jPwZmKlo878Z<2(Jp%&+
V<5C&Grl$jAr$H^Czx@By{vUa`xEBBb
new file mode 100755
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f5079c58c35136c16e717389f0efb550e14db991
GIT binary patch
literal 12292
zc%1E-&ubGw6vy8r5hIOhHI>#1cJZKsWH&9I7K9KZHb_wj?M-O*N0K$kPT1X~;wj+8
zn;=xw|3Q28TI_$|Q9XL_Z}6aRcV^RV+FArru<t`A-<h2^vv1xkGua6Mu*$$%0+<JY
zEC`*Mf<wv5bbyr9upPtpz>TmQER+xLi697qAc%hs6Ouh*-zNy-1QV_giqx{ykx(Y<
zQ&KaDHZxKcsb#4np-kGPq-LaMrOrrIq?V<Qgvv#W$(Ii%@66;I3Y(FtNG<=?kO|^M
zA>Q4UT9=zfci;Q_s~-`O6$7<$?`~CE<Q|wo1t9GLd`gSj+U@oG2IpNSip@=@H14j$
zZ1y6ZaZGn8ZyH(nn_cd<u=F*)GHm;8?qT7YxZ;>CE_;d3A2M;xFs@m^{7o3S+_eoJ
z^u_~=mzB^q5dA_<T<JSzAX<k*h`w<(nX0*d&~O98@vO-x?QUQ1t=xc9m@VXuhS_O(
zeBfGYKN`SqGrPMz_a-igAfHW5*i5N=_X(qz4ZX;%V$HcI|L*$}h?ma-`hPXyzMg2S
zPq>?h%a{ykfC(LFfd?E0;DQAz^if+d4fFU|)G+TufOal^8{nX&1?S<CmgroYj70%v
zwRPSd^lV>C#&cE-FBN@qs}0j}1Mat#mFmQ>cX;U|MjBx2{o_SvuZLnuT~e1-+byou
z)n3C?t={pWe`(wbXU?*Ro@MzR5$Q9^gjL3J{6Iu_hhO<Hj<AR}!)Tx{u=VyiJZrXK
z?#pL5{p~3LzldYmNDf6`^KH-9n_ccX4Oee*$8CDHZVa5R<qut*8;^>KA?e|L_2b5v
z#|>~1qkq_J6rqH(wuEUJlZ|ynSc5v|d(r%=Xw!>kbOE3J)##cN^}w;WHg2&iP{lc|
zM~-XKaZNg|#g1zej%%Ug+Od;U0Hy(4z$oRzxXYzv`iLh>#d06|`xhd3i0O4=A)@`C
zApQ_(A@kvHfICN@{}Tl9AHy=$dbI-M1Hl7?d#!?LBW?h{J_ulmKMd(0fFKBhAP9mW
N2!bF8f*}4rKLKU(9k~Di
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6a1a6c3dacd5a3f432602acd6b97b6aad400c420
GIT binary patch
literal 2430
zc$@)#34!*BP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800004b3#c}2nYxW
zd<bNS00009a7bBm0004c0004c0W!JB`~Uy|8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H12>VGyK~z|U#g}VvROK1RfA2YGce9&puH+t)Kti|#1SQ-mig>Gv
zwn!O4tKig*cGT87>d;P|sSa%!M5hX!w%Qq6Y%3^L0fl-?t%X7q1SEun5MXo9=Dxex
z>pACr`ymMhBZAWp{m;B#&OYb)|IYKC^X~Hqr4;{98DIAX=aTh>ZjXEU<+IDbotu+Z
zRNEc#6nT@tj`t1rhR&Qm*}63tjJ}=NwI+Ni`NXAGVD>|Qx@+2;DH|qD%qu7_Ovlh*
zYd0Jm5-iJ7%uJEkwjvrcscr6)$By|vJ^D%geM37QKmI=fIG3!iy#9u&9pC-tWo6!E
z7YeWe8^sIl8Z8NM3dPDyn+dLA2ph0$NpokAox2ab?K{zOcVgF?;H3l9Rl0!ERoj+c
zTR4B!riGRHx)1^-Kq-ZdKmwb41)oI(D8=$Lo6Fo1+m={TVcB3So46^d-djJoulmrO
z(DuihzG!8fW2yu5fSZBRy)DIsb8oqSaampl8Ui5%3Xqxr6cHP0O#z0$EuhQRm?<O(
zfe;Fz4VS7R;$Xt8Y3YaC6Lrod>#GvG*3^!zKwV`4@EA}6XidFd<7e#~Z(V)m6cLk<
z>e3M!><hvh{jfMg(QFA0#C5LnNEW&*j>o`*;^TluinO^k!$P+eQCs4Vz?Mdv(7rvP
zM4NA7V%M79|5l)`G6i@Tr~tYn38UaIXRf?X<(G=OpyJhbn>phYD+>*__bK|M;BNs9
z3=Ir{PwAwX@NPt)Oa+!iSQ?#iL6Jk@6yP=>JxP$5G0!Ul1ABof=WfA`KptQL`VoJ2
zWl_H2*gfc{CY%orjeUa>pJ~&R5a1Ai00C%%RwZbS0YVM0;li@5M`w-)x*{NL2qYvz
z*U&4fCcCfu>FQ|py3GI@P&i7{J(T2#XldhhO|d-lT?&kDKoK;dA*?_FN{uYQR$wWR
zfE>P7U?|F6Ha3EqfQB!s(Haq`k^4kSIwG%ZqjSl6Z4@9Ehy$*}o!K+OBAp^vH#tTh
z4`%+AJH79atM!f;oMUDWmwR+AO0t<~ND2+f9hnw$lkE{;khVfeP!f<5kzJDN2(_*l
z-GUY%6OchGc~T&rN`WKDcxM+KGLPxb6HIqC5*2RRRURGW(M}#w=|(CYTWCn7ak(K`
zlBS5-0-*#~cm$mxiAMxT5kbZ|2hcr1yjcUJj_<?g2|NXCF@VFstlqFIT#y<~3dAIx
z(M-ncy;LSO(QFklL^5t-l<PjqMf2JHhv8~SDalW0jCV*B3aLOkU}^>onczm^LeUeH
zNHc*l;|ylF%W_L9bOWdbtlqFEIgoIZ@9Lw|%B3xu&7e%9#M1>rqgQ4ysM3)mFImq4
zA17bhOJ74fcETcaLM}5`%wo}sS;K%Ryt*I~hqw))#4sq*1}Vw*n!3_mc?OkrG3qLh
z$5hJfwooe5bNh+oV!+NMoN&^hO382yQS9tug4RaAOlQxZebj9}#L7qRVdnZPa3{NI
zI8@J;7ha)#&nd3De?IlqC+TYF!QnFSOdLnr!l}5kJTL;0;f|43kY71^5Ea$5Pk5`g
zH>=9w)R~#n#mQ(fLwFIohGqyfL*UgT#7~@N$B#Z_-5VRpE6zXfSdB;HJbKduM28|=
zefzbP&zMXs5~bl#JqJJfgemtfpz!K4l$k)qqilUA@aXVSTv^w4^w5K!C%eK`VN-Fu
zKbMNk4w|AxMD1iG8UR7*;mB*v-1fcij4=mz>-Vpbo|DPit<RE`Kkn@H8}7V?rq56C
z%tLE&xCPlW@<2%feM3QQG-!Qw`Ho;B6>N)0OryR(he_^M3LSowZ6i&Iv?PJXZl+dE
zA7kFy)WZ9(?&i_we{!DrsLE$f<_EucgcC3CXKs#<szN^l{=QRZ0a|;^x|;6U*rtWD
zOyY4xZC@T4dVm?8CX!SXX<qoR`{>@o%)WLm*@Zb5jJe{PIk-G2?A@>NUVRRci0wZM
zkl3~6bXcav_O%qFEE8p#SaHeG?p*q!Zl)(UQRwKxJ8>NK2ak<O?mK>p(y3(^G#}N3
zX=QXa1*kcu;y{OX?vJ%coBpXXufo@tH2k8N38ZDxI+()Yo&r)th+9^s@%GDa($&&=
zUgDH=FGGRQMFEBeL%36uXgxD{5D1<J(Av`eMBiXo{dP|&Z39k}H4LE=abi))@$M{A
zCr{z#?@!{%<v-?wExYM%?IP44KnTI-dp`S0^H?;-nYvSiy%}_z>UhTA+&H!)ny_N+
zp|*kO<tc81M;4zZKQ#_Q2VF;KI!4^&y-j<GwFk&{Itld!u`HX^OfS)Jf(O<<%r}-?
z{iOhZ{N;-rJ$9J=85La}O>GnX&5hA9U2%WYk$Xkf)I&p&xW4hDVjfu7Olf8el+8d_
zm|efBX6e$otbXPioDO}sMYAP_p;Ldv$FHB<L{Gb)Tkl(juIm6qLSZ(qdx_6JuEDY5
zIy&BIc-Y_E7=;V;glV&v|2&#G`6(q67>3Rrv;8b6?dR_s{>_aGXRvD3qAz{I)2IEc
zTl)sGcL+?2@so;)MWS^2I>F;2b&8jo=(y^EA?qf8bE9=Z008g&d)|tBi<c@p0RrZk
z`zh>f;>F+HkFIND;$MG#AFsUfFIKN!#Pa3y>Fo;8e5wnV%R$McJRB|un||}I`bTwb
zB$2T0IH1(-uLQ^~sc^-!rfrU7O<$p`IMYt<<gsOC+<yDqF|jo@CwcC<ojm*OYD!AR
z9zy48|NcgvetKIZk+3QcDCN80WaMvdjOUhA+^xj}ZPDymKXixuPAKEZ5#M=nkw}~k
z8+P)<6W_Y1IlzJi6)ame&#`^`r(5R;vEY&>qui2;>q{bmZH8r~D~8*007Fx#c$8Vw
z$FpwTT^G$WD$}%Cx$^n&z`)RLmoyvtn;SpOEvYB~ZkCReyG(EKRhBy|M;dM_n%-yO
z!YLQcajqN=ovNyd`Uf8zoqNf{>BwjEW^PHvo38%jc`hgeN|Fbf|6rPvJYU?Ji^=10
wC3!rqMVCCBUPz0*?p;dp^-3@zO%t#E2W-Jyzp~)@&j0`b07*qoM6N<$f=D!#dH?_b
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..73bd14a1e9c7b42a8111a464c4c66a7333d3a947
GIT binary patch
literal 928
zc$@*C17G}!P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H1106|3K~y-6ZIfF}n{^z9pYPPKWu+}0qb@TuW{ho+F"i#lT@
zab|HD+mu9|r<*Bi$P8Y1qZc#r!ib4WG`k{7;tAu$B$FVRN{nNevN0yJFa$bBIdm;O
ze0=>5e=kUyjO};*<jI@--d7SraJQ>G)){EpxBc*}Dc4qs)eEyrD}C2KJCR?{N$Ukq
zpFY=6-%!)HYilSRw>|WwC0>o#<Z~vYlgZi3!(;m|fAUh|cENa^1~h(f>Fqab9&Bk1
z`E|*aU|<D$GBU4MSZtPERxO9oxfS>OpDv!reDVC(Yl17ab--KkR7K>h^UYyjs2smf
z=7)?#PE}~~3lfIlM&9M+povj*I1^2ZR5W_O+0!<o0>^Dv4vnU_9UL*|_&2u$PZ{LB
zDrgeF*eW;<<+yY$s8|IFDZEM2HbpK0Ar;Uj7D82uu6x>o-NeKLOi<07xR;z$j#yP_
z_Bm`Rvl(211#;Y@r%>vZ;E|KhJ*fg?iEQ9#R@JD~i#($LMXfZ6Eo&6!Gc5PV+5Xs8
zYIkj<(GNEjaC|m~*JLm*cc{RHTZXSP7|gI}RG|rlNZB$o0}1?#VV-SiWjOjL=e`@n
zr+YDM7j^e$f;C}OkM^)i-T3v``8O7JNQH_(AWhK<aHFu1WNeaCAGWS_B3#Ly`bM5;
zX-2q$o-eymf)hl%ejx*l=bDBV(=zF-gl1(4*tbBqrEZM<5#zv-r`G;1OB{OT81aD|
z*JlbNGQiY-=9&KK-DJ~6(ixXr&SvLcnQuSuB9&YwwV1*#S|wr8Fp+#3SH{zwr6vZN
zJ1&+7)rZ<1pCjNc^3RWdvv=DToQ#R-SeUCiFLu0!RkZl()3Xfw^h|VUHe3>Tp841#
z8Ow%$gOHDleonn`fJh_=KyPo1YgZF&P&9-P%o};GPA$FPJ3arAT8j1adqw}FC&Na{
zN#&7bgdjPeCKj8<<56gT_t0&d>F)mhor6`u-|iR_z`mV(Mr=LM;3{4kyf^7Qee@1S
z2tj*$*ROXK07UMq0f_9EGDFqX5l04VJu@|x%>EB?L}jDOx+@_70000<MNUMnLSTXc
CTc)D`
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8264a4ec5f88ba456e1c94d064789d07170ce30b
GIT binary patch
literal 4367
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
JPDHLkV1k2ZLNovX
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..529349bb6efde8fdaccf73b168d7725320b06010
GIT binary patch
literal 2037
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
TjK~--00000NkvXXu0mjfmU_y3
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..08257b314c609de6cfdc7871e18e660f31d517c9
GIT binary patch
literal 860
zc$@)T1Ec(jP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H10@+DKK~y-6b(2eIQ)v{(f8Wi$jVWo8#@bX{6?JU2#TQzcDvqEc
zD1zc+s`zB48^`KWm%0&LC^`#aWLCZfD-4687PMI1_-tzJOl@t^q&^zkOw;CdbMJRQ
z7d~)o{jbh}^Zy<AbB<6-F`9}to$%ExoW3q%YL&$*dq2`Y)cE}OovCl<#J7M|hp*0`
zJ-@th=A=Nd%g&>5Q1DC0CY3Y^zvzoRebBb}>9HNX{|B^J89?=+)_r@*=WW;$@VbQ~
z;Pwz)Nodp+T8!5mvX&$q9da)J^>An6kIm;k0-jY?0eidRg`q#?rFEV_0bY+rLqd?$
zUDS9Ly&1*pl*2B+NhT*b+1#h%&COHHEA_8*;Ah*>0^z}Fs~?$BUM4HZ%ZJn$9Sp%u
zTL&pAz~OXE$4U!CaGWs4g<64t4j3J=K(Wj1&a3yIr$x=BgCB^hGLo_Ym36VwBPq?d
zY3hd<NlM&tT(e#N^}B1A>p)xYuy5nAZcyaTvB>?HO7Q|)Ge8pnl-i1rE~)myTNg-=
zO=gTqQ<t`12k!ru@f7*}3EpRlF_epk$L}z!W*!PqXml%xe1b`(uqEI)xLbQx=v1}$
zwA}bDRw2@bKHnfY%g2lbbJ(@FZq)nuTDEDS1GFb=?ga;%DjXs37Yw7>4$4e(=Hm75
zns;njg*2_44$%F^JZYw9{kmE_K{+~(WueRz+t>f}U4SxEXwn+e0Xk0AwfI)<fAnw9
z#0B+BqxftK$4qm!;r0mQ_KnNF)Gj46`sXHVj9qLF3}lYpEYS{5?M7wOY+Li=$j#aG
zS0Q}L03dhmK+d~lcQ6x|@lM&VJ-GV>!N^A|n-n5cQb_o5ryc3(HAXxWKuP(MzjOJ;
zYh<2RObAM<%lb(S+v@p01L1{Q;%@EcrCTqYxplR(BYI?106=JRIY0=Q47>wg_r2<r
m09$92t~ImP)P|R_;~xOudPs2xMi$xt0000<MNUMnLSTaO_?Ywn
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3b3cdabfc59079d55219fb73a34ebf9338256f62
GIT binary patch
literal 3491
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
Rx_<xw002ovPDHLkV1m+-t|I^d
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..e2c9326116ba9e80a9847665f6a07886f0a4ad4f
GIT binary patch
literal 2673
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1ef44d21fbf5d0854e569d4a03054001ea7a1260
GIT binary patch
literal 954
zc$@*c14aCaP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H112;)TK~y-6ZPQz9lXV=%@$dib`}Rc7>)OpOLuA8tOap-l-9n5p
zn4qF09^$+JU5qy>mwIWu@XC-#)WqnOiNr)9F~mi;5dy<Rc7l~MyR9s2?Yi?=kL%&>
z`@UWnNJM_O&y&y9^Am<)@Tl{@@ue&JO#6vcRq6;Bm66m&esJdOsnWwe@i1`g^WP3U
zePGXEq}Ag~*3ArN1%1IfrDB!IJFBT%qw$_wXHG8u7ns_sAn5umcKU<%eXsR;92TJq
zxSWRzIf?hYD$SBkMb(&0=k;HH9Xpl#_N^cP1#Wlj1x_coyn*lQKb^37TsUkJ=W~Lh
zY$EC~SS%Z4N;>bjtCVXR-wdxB_lAdeRWE$FAOmmKb;&iE-TmT3InCW-7_%KpRv8q*
zKwSn+!->uhYclG#K=>Mk(in^Z9vM&)Yu<p#VljW@KF5T<pILUZXoM(fPPD3tqc)w8
zUE`0m%2IlX$8(!lyhZoPXAhl`f%sy<`Fcr~X|U8dVjZPZPf(NXAPF!aR5u99I>nJ~
zB5o(o9c|-!{}9vRz`GJKmMz=-PAN~mZ05$rB6B}a(<(BEg$%W9g{88ArW-UhD7^gY
zAx4I-(Am*UpvmtPhGFpO+4qy7fZDd5EYjQC$M~hI+*Mat+GwQRB`A1(C|(&eW@chr
ztYlTPxe8nJGg%2BUO0TMT+&cNR>lYVS)Pj1w3_F5PXv#s@OGOZaN|0$-{XA8OPp7u
z3~Yyq=ft1{@ON7O>e^x$lT;^J$k5Z>PE~`s(LZVSTli~u5{tvZyb-{cyh5a!;7R)$
zp7rUA50>b9;p4HkmiocIXa;RAhc)CT(B@-vcAb^mRXPuM6YY+ms0FGU%Ou9*3|)#(
zN%tpNQ5t%t=4Jis%R%(k9bm7sw!DGnl32IeIrd67BSTloWm4RUPh;I-q3hri=?6fq
z|C5@c7JR8xMgL-;m7DVlhFSu(grSz9c#r3ggqe;dXz)9Es-p#6*X#d#CIHXA<L6Xc
zW3Ru_Cc=+ZaAY^x-{dvidalso5-HgvSxhF$o=9XS9ti*hckTfQ0y}{fAhWtKtKHAL
cgb;xFA3Y6rvkUkTQ~&?~07*qoM6N<$f(hfx00000
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..56d2b459dd1f648dba4811ddb612e105249ce979
GIT binary patch
literal 4882
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
Ef+}%nR{#J2
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fe522f0f04786bf26d4739f90c9d5432eb607bd6
GIT binary patch
literal 59767
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
bY&CUF?H1Zvn&g!)%}V~i_J8gF7w!K6Cf!Gu
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cd81a18bf063d1a81046dade3834f6bdc8e5c054
GIT binary patch
literal 25214
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
Y4e-PNE8t5ISRd-!)pj!SKaw8!KhN30BLDyZ
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/jar.mn
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+instantbird.jar:
+% content branding %content/branding/
+ content/branding/about-credits.png (content/about-credits.png)
+ content/branding/about-footer.png (content/about-footer.png)
+ content/branding/about.png (content/about.png)
+ content/branding/icon64.png (content/icon64.png)
new file mode 100755
--- /dev/null
+++ b/other-licenses/branding/instantbird/locales/Makefile.in
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DEPTH = @DEPTH@
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+relativesrcdir = @relativesrcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DEFINES += -DAB_CD=$(AB_CD) -DMOZ_DISTRIBUTION_ID_UNQUOTED=$(MOZ_DISTRIBUTION_ID)
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/locales/en-US/brand.dtd
@@ -0,0 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- release branding -->
+
+<!ENTITY brandShortName "Instantbird">
+<!ENTITY brandFullName "Instantbird">
+<!ENTITY brandMotto "'Cause witches can also type!">
+<!ENTITY vendorShortName "Instantbird">
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/locales/en-US/brand.properties
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+brandShortName=Instantbird
+brandFullName=Instantbird
+vendorShortName=Instantbird
new file mode 100755
--- /dev/null
+++ b/other-licenses/branding/instantbird/locales/jar.mn
@@ -0,0 +1,10 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+
+@AB_CD@.jar:
+% locale branding @AB_CD@ %locale/@AB_CD@/branding/
+ locale/@AB_CD@/branding/brand.dtd (%brand.dtd)
+ locale/@AB_CD@/branding/brand.properties (%brand.properties)
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/locales/moz.build
@@ -0,0 +1,6 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/moz.build
@@ -0,0 +1,8 @@
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['locales']
+
+JAR_MANIFESTS += ['jar.mn']
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4f10a67b0b234659d59f6cb1cdd4bffbe5cadd34
GIT binary patch
literal 19837
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�IaUXUZ5+`@#a%%
zbf5**3#x5@Iw?~s4XLxe%LW4bOd<!<#{xlhDV+A%W2u=}$$8&Am6JYsB>r4)5^1))
zk`-k;WD*>b?!FLh?SpjmjMCi~B9YKRN@6jMt-E_^+SyD0U}Q`ld8GkPy6PxSzUt`o
zyIJ?@YAUIpGKq@1N!<AJuQO?ixzXA)k37p~&iO38ojta0-ZbN#Ql5pm$w8k3_zX#t
z`{Ik6`Px_iOgJ2)y0(O?Z#<ilvV2Mk0yNZ?qGWVk{xdWHm|CD4WM|Ia7w;8%JS5yX
zsmTbC<YihLZ0`*4>os-6wA9V)K*-Pv!9qW0eC{|(Y75egm-h5F;MhM7ES=yO8I94|
zGeUdUFk5zZv!kt#t-E?s!?cdFWPD^ekZ+SB8$&D0ikLaQhQiVUK70F@n0ADznVQyb
z;i@w}&5rk*&9vi5xg7`&KfrD_viJcO^B;NS4Q{>lQ4*TYtl5*f^7;>un-^eGNiNeS
z7iaCZ{-*$-tF2i}f<TQ8?(}!A`wJk2Cl|9%)0Ws~7Mi>K{Pe|o2Er~!1v^y#7_E?u
z&t!b|v4%{>JJMN)l#)<5KKA$Q&t#5YBwr^(a*GRcX>6E6Fh9W6w_MMHlg){y-R(VG
zcitCy_378gZ}!;)WZag4W0X+0$^&=Z^(=SY^(<1tQOB|D0sIUD^L^+501V<uL_t(c
z=hCZB!|QWXQ&B*TtphC+1ph1zKv!Gy0MG$+cn7w>;ThcZ8bU>Qa?^~rlQeDhz5x%n
zzc7Wp{l4*ifHBk0$7+VGnjkB~voqE4tRvsCc}knTHBxg8(m)6Xyv%8sLNLe2r8iy9
zDHkjOAQF!9jcaaY<%7>;VSd_?o2c1m_xzEPgr;-rt&j4^BX0n(<n(!b=+YB$xfK3i
zduJLO$63bl-#fE2dtY|!jqOd=N4iZLqgX1Tv{0@R(Qq{Ip&z)Z6dKVG3IY{Wgg8C`
zMdB17QBo41972c|Q6N1?xmsvxXj589>@>BVILW4QZLins-JP8oKFrMScz1lnNt|AP
zX*7F|)_#8P^FHtMzVp26(ydL^!^C;&0vsL3h9Erlx8KO6@nK{Yp}K-X4-lqiWWKqt
zn*(E!xyD!sh9<)_yXs~z=JN{kxAtbx%sBuwN9opef_@+U>odf{0p9k3x3hKIRwQ9n
zCAsx8-{+URep?61T)@S<BY)Ekg2|~<d2agHZuaea5+Pvgb+2agJ6?%T7Oc;-&8ZMR
zpUx=&c2{6QU>e7x!+U=ym#1>b0fge(lga~xN>#Ay!8P1}umyMI-`pw<nho#eA&dqC
zHXhAgLGAjDN5geZ*9s(~wz$KI((527vc#p?wY0=Tymrf#y#JH$#iv+t(RaV{Q*QtE
zuRL4%oNmPl80Yl+Cj0jvVf*$UaPZ(5KA+5cu74AkUv(*pPvX)Z?;_FAoMt)K9)R4)
zU>?g0923>jXk_G`A4%HG1im214JFMQKrl_X>%eM${%EJQ%*);S7HE;)MxW=q%klsX
z*K&J+d82g8U=k+ld%IY@Do+39>)HOf>j_4z|HGc|-N|>pe1}~C$|GB7x<GKf|C68o
zl~3P%2UAl;k}VOo?cBnKfo=k-j}5)4d5c7Q>6`-qkQ*610gM4-Qe}E5GIH;aMYS{|
z)UY)?Z0ZJ>^V&m4l6-4l592dRgX{M)Xk&}^@E(g9cu9cNVK7{?gr>e&ly0@+o;7V`
zI#-d&cCq6N*OP3s0<&M=aUZvSeh)^q%EH+~gXw&cTW<L|dv-s7VVZ1s#aeFs)U~X&
zD}!(7O)Xd?8fc0F&kF#yj$+ju9+OMY{V#HK-_L|zE($dQO31Sta5w5_#zTDN-gP`W
znyA0&hQVt-p$Q5vSAX{JRm=5^o4~*`N_UL!>dQOY;$$<cNp-Gb$LBvtXC?)}AMSdP
zFMVbgTBS1Yuy1H^j2pK9fQKI*LK1>4TQ~8ZZC4YH1ZYcy+0fgL;#=ID=WP_wD0}tE
zFfa;?`esf%9v$AhN79PZLJ2hoh8{4KDiVACk>)24rzutCxo>(IzA0#I1Y?P<-1Bqw
z=bAm&p!yYjvNYHD9z!{|M`($MxTJSA$z+7>x4fHde>VUR-2WJ#{p1fR*;zyPHGhBi
zqwM_X?c`2Q5>JHLwsQ+tUHuAVS)#YAg}!u4Q-WtPnVi|};meYJSMdlo1oG_ZC!^2&
z{zp<J{~W#m!XIT$SmFf&@W^n2uin$g@c4XDtye729K0<a0D5==kLzf&766f0v?)q&
zj02i7ccxA(>}SJ8ox~ymKJ@W-a@m#EmW>ZT^gnLC={AbfvzVq%xm4n7x8BLuzy3Qa
znw8wS@l)5*y>7KN%IHnimd!6!&K!oYmWZEU0HBsC9>#`1s^kyFj{I(qTpB-#>_-IR
z&{)OW!z-LFsC?s3J?#B&8-^h~L1|WlVHXVmJv@QOkEzUB>jWe5Fy8rj4-jh6yahr~
zk?8O1AR6*>-G|=Ho8Gz!fF}+-!zXUKje}2(vUA5S_U?TgA>f*KT*muu*i1AQq$L)l
zzi&06fO5w6n3<{F7MO<>001C2GFZggn{X5u71h$A=#jhkDAS{dkbH<>0%X6pQC<Ik
z!xY^8pA=ucw~wJ`!`_W|1*Da10AgY9R_+zidn9)hS=5GXo3Gu(yWaacgd`X|betPM
zavO&apClFw^5GrV@Vd<#kz_%pBSCiU;+sOur$WJ+;WSqg0H`e>IgAa0Fse^SM(+DX
z@Z=-=gsE4BKZ;Pp3memZ{rF^nZ}02j_J`K;T+w5Pkfj_8X_4=0wg-sX0G!R7zAWJ4
zOe^h)5Sy-C&--uKjA}>n*^4{bar0KXvz_=AnGHQDI$D>$FMyX^9$*TVu`K*-lp7hG
zO=YrAV|B0^pao9<NAnePCuh>Hf19Dk;zCw2D+TNRf48ALfPd_0j3<vrc=P(xY`)|)
zs%$iWXg-~Vw<y~lARG(NHLlqh`7bcr=lZNLO?o<$s4{SAnr%C`aOkO{yz!a=BuOF>
z4X`fVY6YBUshOF%9$-ZQ0LYCDmQ$JRVQc^Z%~w2Cjvc;hyx4WsTPpGHi$owUsFpD+
zGj{Msv%zd2G+pA4Pqp*UXOg^g<4G=CyNnH@&rr24AQEy#{`0r;rOxShwMI~_Wt5~d
zRtcSSdz^H8Y@wfXMshrW|3U!(wUqJGsZ4ejyJU$lv{Lx!zPvh-?w{?r{Pns&kr1+q
zsm*}ayv=$e5EDg(-Tzp_pAN0!>Wfb^uqKbZ*alI{R6Pa=c|`sm#yx{M{kB9H)h9E2
zVuJ3D<h&`}W&Q4|UMnCiT}S{N<wgdN+YmTqONvV2SV0*Y8!5F9Tv1xpKY$uhP=c71
zS*Ut|;K;W1=y;Ib53L~?(s)C5oY(YC5K#2_zqbrI07Rpq1{dF8T+cau@0h_&bUYGZ
z<3%0k^fv>{6l(py@t{2nyr2MpHH~aTP{jIC1u&-rryiSDCkCIIO>KIu7VqxCACXZ*
znA)uE5f*OU6GeqPA79NMpKRxfz6su#9j7H+S@1hcRmI-UE*uGZ5Bpq(UwlD_ZVxxl
zznuObn0D?Cy5Il+<VFTdz)&ia%~LO8P>{5lsqnEspE7chbg6ydRh4*e4{BIO2|~4u
zSuKOHa83MDRpNm|t^8%Mg@HABuIQO0n<~s*nS6#SJ9z+?2bi;<V@Y%RD{Fjc&H=#l
z1OP|5k-=Ollbyu!1XK1gA!&t)(AeKk1akX3OKlqmDv5RLOeLrYB?v~<0-;*22aFyv
zOu@fL<NSLxPEgV5@0w;Ho#&F(1ytYCM-QfHqTBswI2x!KbGdW+E2%==13W(g0Be+h
z6(Ejd0q~r2NY&ZXp%ec+9y<9*OC{d7zLMze)50CAgc_Dm!<IMDHB7x?-_`5=51!Rz
z{xzK7U&9Gh+2E3n0vpqL`a7oysSC#oTB-j2$z!KDcwh)sl~Gk6enmo6WE4e0@yST`
zMA3Y6`YWwsLk<9*hX6RrjSNnvGTAAh4M<_FJYI!$H&Rla9LlMaLyw!jz^ZaGd$AVH
ztgQxHV<<sMC_%uq>*s5(7T4VBD!RmhV=)dKiy=!U-L12v6SH(BOQaJeI^$)0wfurW
zE7!fnH@~=h!M{OKWK_R`s`^k>g@E5@Klb5QeW=cJzhXUCefa$fe!q`MBtSG8oO8rt
z*4ej&SwAn$6kY%xz%6@5@l-04Jq@&C!O#LE?Q>jIOYy+7PmBhheIjm3N?eO{t*J&j
zJF21fR^8tcMpov|lR3jS_uK&1LQfr&rzgW4nG!H!-NPtJkcw64N|Z<^W@*uLR6<Fl
zs)nRjko4xepd4wMj;84>ypi3RD;QL3K*XX!qBa=L<47b>gC%NzCKe0Ux&YG!z**lJ
zw313?vI2-x2O;h{B0$u24w<q)Rt>ea>;6Q-P-AgJjfHhJ8ZwlKidcFwU6{HlRSFfU
zk}pY>{ES@5Ps^o=DS7tUabZ*ol4+DBT`x(7p-G0WNxH7ddR3DQT~qX`F6+7>SGBUN
zR}EpBe$(2KH6+<*6GGUJfv^c-VL_hY95zy`R4oYD^@wSHm~(mYm5}WbCV|ORCL6$l
zpcTvLaq0ksfRND3A!YhlNSQtsuwPREKM2K?m4GR!ep6NhrmQNaq{yb^lZ2t^Lf3R*
zR5YP$6`_|kVQ3ZVnaeU(&cZnt4Ivc`pX3Z<r(Ne$_EGSv&ao8r3lWJxq6$e95|VXJ
zN{}$^*Bn@c{T%Cg5_{`kN3OPBiveCx9>7bfOcpHTCaFUZq7Fg;@KXmMV4oGN$uQY<
zc1wra&KjEixI{AqMb|Nn1?V`C&y5V8+YHnh>Xkw$1|(ES=q`YCIK1C9_rr?-0Jm%y
z6y|yaKXnM4vw~&tMhM(;j9;6$avg3DkjEOO6oB$_Tl$64iwb~7*+4jkcDjKebqE{~
z9OFA)z-hT|4^YOcv+ty?%Ru#oX7EP6r~z0=c0dW1@!hp+JXZlYJ8Znz^pXYOWm#IW
o6+tiS`Kgxyc!}#}0AAwyKR}8q`Uk>h5dZ)H07*qoM6N<$f?w@cPyhe`
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/mozicon16.xpm
@@ -0,0 +1,230 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* XPM */
+static char *instantbird_16[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 204 2",
+" c #161E25",
+". c #132636",
+"X c #132638",
+"o c #340000",
+"O c #251925",
+"+ c #0F2F4D",
+"@ c #0C375C",
+"# c #093A65",
+"$ c #093B68",
+"% c #1F415F",
+"& c #0F416C",
+"* c #064175",
+"= c #09497E",
+"- c #1E4D6A",
+"; c #194E70",
+": c #3E4150",
+"> c #27586D",
+", c #316171",
+"< c #5C3E36",
+"1 c #78462F",
+"2 c #53574F",
+"3 c #4D5F73",
+"4 c #466762",
+"5 c #4D637A",
+"6 c #5D6E7B",
+"7 c #6D674D",
+"8 c #6E6C56",
+"9 c #677C57",
+"0 c #6D6464",
+"q c #797D74",
+"w c #06559B",
+"e c #0F5B91",
+"r c #13548F",
+"t c #0B68AB",
+"y c #0969B4",
+"u c #21598B",
+"i c #2D5F85",
+"p c #32628B",
+"a c #266EA0",
+"s c #2D72A1",
+"d c #2C7BAA",
+"f c #0F7ECB",
+"g c #487186",
+"h c #40789E",
+"j c #537F85",
+"k c #457DA9",
+"l c #757E80",
+"z c #788965",
+"x c #3988B2",
+"c c #1890D1",
+"v c #19A2E6",
+"b c #2A97C5",
+"n c #21B3ED",
+"m c #28B4EC",
+"M c #2DBEEF",
+"N c #27BDF0",
+"B c #1CC5F4",
+"V c #1EC6F4",
+"C c #1CCDF7",
+"Z c #1CCEF7",
+"A c #1CD5FA",
+"S c #3AC4D9",
+"D c #2FCBE6",
+"F c #2CCEE9",
+"G c #29C5F2",
+"H c #2CC5F2",
+"J c #2ACDF6",
+"K c #34C1F0",
+"L c #36C9F3",
+"P c #4481AD",
+"I c #4C88B2",
+"U c #42AAC5",
+"Y c #44BADF",
+"T c #58A1C6",
+"R c #63B7DB",
+"E c #72B2D3",
+"W c #75BFE2",
+"Q c #56C0BE",
+"! c #7CC09B",
+"~ c #47D0F4",
+"^ c #63D9F5",
+"/ c #7ECFF0",
+"( c #71D6E7",
+") c #7AD1EF",
+"_ c #71D5F2",
+"` c #8C583B",
+"' c #83644C",
+"] c #8B664D",
+"[ c #85704A",
+"{ c #877A59",
+"} c #9B6B4A",
+"| c #907747",
+" . c #997253",
+".. c #857161",
+"X. c #AB774F",
+"o. c #A47751",
+"O. c #AB7A51",
+"+. c #AD7951",
+"@. c #AC7B53",
+"#. c #B07C53",
+"$. c #B27E54",
+"%. c #8F8154",
+"&. c #8F8650",
+"*. c #8E9552",
+"=. c #979849",
+"-. c #98994A",
+";. c #93915F",
+":. c #939A56",
+">. c #909B5D",
+",. c #979E58",
+"<. c #949C5C",
+"1. c #9B9053",
+"2. c #989256",
+"3. c #989C52",
+"4. c #989D54",
+"5. c #989E55",
+"6. c #808370",
+"7. c #9E8B75",
+"8. c #989675",
+"9. c #99A660",
+"0. c #9CBD75",
+"q. c #B58156",
+"w. c #B28258",
+"e. c #B28259",
+"r. c #B3875F",
+"t. c #B6875B",
+"y. c #BD895C",
+"u. c #A18061",
+"i. c #A38261",
+"p. c #AE8C6D",
+"a. c #A9927D",
+"s. c #B38861",
+"d. c #B4936B",
+"f. c #B19170",
+"g. c #B49677",
+"h. c #A2A355",
+"j. c #A9B15E",
+"k. c #AFB55B",
+"l. c #B2AC56",
+"z. c #A3AE62",
+"x. c #A2B369",
+"c. c #A7B86A",
+"v. c #AEB668",
+"b. c #ADBA65",
+"n. c #AFC26A",
+"m. c #A3C97B",
+"M. c #A2CA7C",
+"N. c #A2CD7D",
+"B. c #A8C672",
+"V. c #B5C164",
+"C. c #B9C865",
+"Z. c #BDD27C",
+"A. c #C29061",
+"S. c #C59463",
+"D. c #C7A074",
+"F. c #D5A46E",
+"G. c #D6A56F",
+"H. c #DEAC72",
+"J. c #F2BE7F",
+"K. c #C0CB61",
+"L. c #CFC062",
+"P. c #DECF70",
+"I. c #D1D479",
+"U. c #D4D67A",
+"Y. c #FCE175",
+"T. c #FFE47D",
+"R. c #919C87",
+"E. c #83A49A",
+"W. c #96AD8B",
+"Q. c #9CAD91",
+"!. c #AF9C86",
+"~. c #83CEE8",
+"^. c #8BCCE4",
+"/. c #82D7EF",
+"(. c #8CD7E4",
+"). c #8CD4EB",
+"_. c #8AD8F2",
+"`. c #93D4EA",
+"'. c #96D8EC",
+"]. c #9FD5E9",
+"[. c #9BD9ED",
+"{. c #A5D6EA",
+"}. c #B3E3F2",
+"|. c #B5E2F2",
+" X c #C6B89D",
+".X c #DEB684",
+"XX c #E6BD89",
+"oX c #EBC088",
+"OX c #F4CE98",
+"+X c #EACDA1",
+"@X c #EDD1A2",
+"#X c #E8D6AF",
+"$X c #E8DAB6",
+"%X c #F8DEAE",
+"&X c #FFE789",
+"*X c #FFEA97",
+"=X c #FFEB9A",
+"-X c #FFEDA6",
+";X c #FFEEA8",
+":X c #FFEFAF",
+">X c #F5E1B4",
+",X c #F8EAC0",
+"<X c gray100",
+"1X c None",
+/* pixels */
+"1X1X1X1X1X1Xr I d P a 1X1X1X1X1X",
+"1X1X1X1Xk E ].) K '.^.T s 1X1X1X",
+"1X:X*XE.{.|.}._ B /.[.`.R e 1X1X",
+"-XT.P.W / _.L J ^ ~ H ).~.c = 1X",
+"&XY.j.U n N B Z A Z G M m v t 1X",
+"&XL.b.n.! Q S D F ( (.Y b x h < ",
+"=Xl.x.V.C.B.M.N.N.Z.U.6.a.+Xe.] ",
+";Xh.k.c.{ [ K.z.0.m.I.8.>Xs.H.u.",
+"1Xz 9.&.$Xg.;.q 7.R.W.Q.l 6 5 : ",
+"1Xg <.-.d.} O. Xp.XX@.0 f y w @ ",
+"1X% P -.&.G.o.u.D.q.r.5 u p i O ",
+"1X1X& , :.| 2.v.1.' !.#X@XXXy.1 ",
+"1X1X. * > *.3.4.5.8 >Xf..XA.S.+.",
+"1X1X1X. $ ; 9 =.-.7 >XOXt.F.J.X.",
+"1X1X1X1X + # - 4 2 .. .$.$.q.` ",
+"1X1X1X1X1X1X1X 1X1X1X1Xo o "
+};
new file mode 100644
--- /dev/null
+++ b/other-licenses/branding/instantbird/mozicon50.xpm
@@ -0,0 +1,315 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* XPM */
+static char *instantbird_48[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 257 2",
+" c black",
+". c #1E161D",
+"X c #161D25",
+"o c #18192A",
+"O c #162028",
+"+ c #132638",
+"@ c #340000",
+"# c #3C0805",
+"$ c #310F12",
+"% c #392E3D",
+"& c #252230",
+"* c #341822",
+"= c #0D3457",
+"- c #132C47",
+"; c #163150",
+": c #0A3A65",
+"> c #053F73",
+", c #133864",
+"< c #2A2F48",
+"1 c #044174",
+"2 c #04447B",
+"3 c #094372",
+"4 c #18476B",
+"5 c #114870",
+"6 c #305C6E",
+"7 c #3A6369",
+"8 c #410D09",
+"9 c #44110C",
+"0 c #4C1A12",
+"q c #441916",
+"w c #511E15",
+"e c #552619",
+"r c #4A2016",
+"t c #4C2825",
+"y c #552B24",
+"u c #5D3223",
+"i c #5A3328",
+"p c #573936",
+"a c #48363A",
+"s c #602E1E",
+"d c #633323",
+"f c #663828",
+"g c #643D33",
+"h c #602E20",
+"j c #5A4332",
+"k c #67442B",
+"l c #674636",
+"z c #73422C",
+"x c #754734",
+"c c #705534",
+"v c #484752",
+"b c #4C5461",
+"n c #5A735A",
+"m c #526E5D",
+"M c #795748",
+"N c #684F47",
+"B c #756D48",
+"V c #657572",
+"C c #003399",
+"Z c blue",
+"A c #044A84",
+"S c #044C8A",
+"D c #044786",
+"F c #055397",
+"G c #16568A",
+"H c #165993",
+"J c #025288",
+"K c #065BA3",
+"L c #1A6199",
+"P c #0862AA",
+"I c #096AB4",
+"U c #0F70B7",
+"Y c #3D6989",
+"T c #336F93",
+"R c #3179AB",
+"E c #0B7AC7",
+"W c #567D97",
+"Q c #7B8957",
+"! c #779172",
+"~ c #008080",
+"^ c #3B86B3",
+"/ c #0D88DA",
+"( c #1192DD",
+") c #128AD3",
+"_ c #169AE2",
+"` c #18A1E5",
+"' c #1CACEA",
+"] c #1BA6E8",
+"[ c #1DB3ED",
+"{ c #1DB8EF",
+"} c #1DBCF0",
+"| c #3498CE",
+" . c #36B2D5",
+".. c #24B8EC",
+"X. c #33B1E8",
+"o. c #1CC3F3",
+"O. c #1CCAF6",
+"+. c #1CCFF8",
+"@. c #1CD1F8",
+"#. c #3AC8D9",
+"$. c #29C5F2",
+"%. c #3ACBF3",
+"&. c #2ECCEE",
+"*. c #40819E",
+"=. c #4D8EB7",
+"-. c #53B4BC",
+";. c #74B498",
+":. c #58A2C5",
+">. c #42A0CC",
+",. c #53BEE8",
+"<. c #48B7E7",
+"1. c #73A9C3",
+"2. c #70AFCF",
+"3. c #539BC8",
+"4. c #74C5A3",
+"5. c #5AC7BC",
+"6. c #45C5EE",
+"7. c #45CBF1",
+"8. c #50CCF1",
+"9. c #65CAEB",
+"0. c #78D3EE",
+"q. c #71D2F0",
+"w. c #5BC6D1",
+"e. c #89583A",
+"r. c #895539",
+"t. c #80763F",
+"y. c #865D43",
+"u. c #8A6249",
+"i. c #876653",
+"p. c #976545",
+"a. c #997457",
+"s. c #8D7152",
+"d. c #A87953",
+"f. c #B27E54",
+"g. c #8F833C",
+"h. c #88874A",
+"j. c #818A54",
+"k. c #989748",
+"l. c #98994A",
+"z. c #94954A",
+"x. c #989C53",
+"c. c #989F58",
+"v. c #939852",
+"b. c #92904C",
+"n. c #93926D",
+"m. c #99A25B",
+"M. c #9DA156",
+"N. c #9AA964",
+"B. c #99A762",
+"V. c #9BB572",
+"C. c #9DBB75",
+"Z. c #98BB7C",
+"A. c #9BB26E",
+"S. c #AD8158",
+"D. c #B78559",
+"F. c #A29453",
+"G. c #B48E69",
+"H. c #A6A95C",
+"J. c #B0AF54",
+"K. c #ACB864",
+"L. c #A1BE75",
+"P. c #B3B664",
+"I. c #A6AC68",
+"U. c #BDC25D",
+"Y. c #A1C479",
+"T. c #A2CA7B",
+"R. c #AAC674",
+"E. c #B4C568",
+"W. c #B0CB7A",
+"Q. c #AFC368",
+"!. c #9DC57F",
+"~. c #C5B13F",
+"^. c #C59766",
+"/. c #CD9D6B",
+"(. c #C9BC48",
+"). c #C7BD4C",
+"_. c #D5A36D",
+"`. c #DCAB73",
+"'. c #D6AA77",
+"]. c #C6A078",
+"[. c #EDBA7C",
+"{. c #E4B278",
+"}. c #F1BD7E",
+"|. c #E1AE75",
+" X c #C8C956",
+".X c #D4C94A",
+"XX c #CFC74D",
+"oX c #C2C965",
+"OX c #C9C971",
+"+X c #CDD279",
+"@X c #CCD077",
+"#X c #D8CA77",
+"$X c #D2D479",
+"%X c #FFDF5D",
+"&X c #EDCE48",
+"*X c #FDDE63",
+"=X c #E9D36F",
+"-X c #FFE16A",
+";X c #FFE066",
+":X c #FFE273",
+">X c #FDE47D",
+",X c #AF9A84",
+"<X c #BAA587",
+"1X c #8CB0AC",
+"2X c #9BC78C",
+"3X c #93CDDA",
+"4X c #87CDE6",
+"5X c #8CD2E8",
+"6X c #8BD0E7",
+"7X c #85DBF2",
+"8X c #93D4E9",
+"9X c #9BDAEC",
+"0X c #98D8E9",
+"qX c #99DDF1",
+"wX c #A4DAEC",
+"eX c #AEDDEF",
+"rX c #ADE1F1",
+"tX c #A4E2F1",
+"yX c #B3E2F1",
+"uX c #BAE4F3",
+"iX c #93E0F1",
+"pX c #D2B58E",
+"aX c #EEBE83",
+"sX c #C7BFA3",
+"dX c #CFC68F",
+"fX c #D8D1B2",
+"gX c #D7C7A5",
+"hX c #EAC796",
+"jX c #F2C184",
+"kX c #F3C68B",
+"lX c #F4CC93",
+"zX c #F5CF98",
+"xX c #F5D29C",
+"cX c #EDC186",
+"vX c #E6D2A9",
+"bX c #F5D5A2",
+"nX c #F7D9A6",
+"mX c #F8DDAC",
+"MX c #F6DBAA",
+"NX c #EADBB6",
+"BX c #FEE581",
+"VX c #FFE78C",
+"CX c #FFE993",
+"ZX c #FFEB9B",
+"AX c #FFEEAC",
+"SX c #FFEDA5",
+"DX c #F9E2B3",
+"FX c #F9E6B9",
+"GX c #FFF1BA",
+"HX c #FBEDC2",
+"JX c #F0EAC7",
+"KX c #FBF2CA",
+"LX c #F6F1CE",
+"PX c #FBF7D2",
+"IX c #EFE8C5",
+"UX c gray100",
+"YX c None",
+/* pixels */
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXK D D D A A YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXD G R =.2.2.| | 2.:.=.R H D D YXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXZ G R 2.wXwXwXwX6.o...0X9XqXqX8X2.^ G D YXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXG =.0XeXeXrXeXtX0.} } } 9.qX9X9X0X8X8X8X:.H D YXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXD R 3XeXuXeXyXrXrXrXiX$.o.o.o.8.9X9X9X0X8X8X8X4X^ A YXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXHXT W eXeXuXeXyXyXyXyXrXrX$.o.o.o.q.wX9X9X0X0X8X8X5X6X2.G 2 YXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXAXZXVXBXpX1.yXyXuXeXuXuXyXyXyXrXtXO.o.O.o.%.9X9XqX0X8X8X8X5X6X0.0.L D YXYXYXYXYXYXYX",
+"YXYXYXYXAXCX-X:X:X#X1.yXuXuXuXuXuXuXyXyXyXrX8.O.+.O.%.&.7XqXqX9X0X8X8X5X6.,.<.) L J YXYXYXYXYXYX",
+"YXYXAXCX:X;X:X;X=X^ eXyXuXuXuXuXuX7X%.8.rXiX@.+.@.q.iX0.tXiX7.$.9.5X8X5X6X4X9._ ( J 2 YXYXYXYXYX",
+"YXAXCX:X%XBX*XBXn._ eXuX0.0.uXuXuXO.o.O.+.+.+.@.7XiXtX@.%.$.o.o.} 5X8X5X6X6X,._ _ ) D YXYXYXYXYX",
+"YXZX>X%XBX:X*XJ.;.X.eX0...{ 9.uX0.o.o.O.O.+.@.@.@.7.%.@.O.o.o.} } 8.5X5X5X6X4X<._ ) I D YXYXYXYX",
+"SXBX:X-XBX-X%Xm.A.| ' ' [ [ %.9.$.o.o.o.O.O.@.@.@.@.+.+.O.o.o.o.} { 6.4X,.6.X.` _ ( / J Z YXYXYX",
+"CXBX-X-XBX>X(.V.C.;.] ' [ [ { { o.o.o.o.O.O.+.@.@.@.+.O.O.o.o.o.o.{ [ ..' [ ' ` _ ( / I A YXYXYX",
+"VXBX:X;XBX#X(.K.C.L.4.' [ [ { { } o.o.o.O.O.+.+.@.+.O.O.o.o.$.q.9...{ [ [ ' ' _ ( / / ) S C YXYX",
+"VXBXBX%XBXH.K..XR.C.C.2X-...{ { } } o.O.O.O.O.O.+.O.O.%.7.o.$.0X0X9...[ ' ' ' ` ( / / ) P 2 YXYX",
+"VXBXBX*X-Xm.A.U.XXR.L.T.Y.!.4.5.<.o.o.o.@.@.+.O.O.o.O.7X9X0.8.0X0X0XX.' ' ' ] _ ) U U H G - @ @ ",
+"ZXBXBX>X&Xm.A.V. XXXQ.T.Y.L.R.T.Y.T.!.4.5.5.#.#.#.#.@.q.0X0XwX3XwX3X-.T 6 v a p M i.s.a.p.r.# 8 ",
+"SXBXBXBX(. XA.A.V.U..X XR.Y.Y.T.T.T.T.T.T.T.T.T.T.T.T.T.=X$X$X$X$X$Xn @ M JXPXGXFXMXxXlXD.w e.0 ",
+"AXBX>X:XJ.(.K.A.V.V.E.XX.XU.R.Y.T.T.T.T.T.T.T.T.T.T.T.T.$X$X$X$X$X#Xn.N M g gXFXMXxXkXd.s ^./.0 ",
+"YXCXBXBXc.J..XP.V.C.C.C.E..X.XJ.Q.T.T.T.T.T.T.T.T.T.T.T.T.$X$X$X$X$XOXp LX<Xy u.zXzXp.d _.}._.8 ",
+"YXAXBXBXH.B.J..XK.V.C.C.C.L.u 0 XX.X XW.T.T.T.T.T.T.T.T.T.T.@X$X#X+X@Xp KXHXvXi.w g f `.}.}.|.8 ",
+"YXYXVX=XH.B.B.XX.XK.C.C.C.j g q u XX.X.X.XoXE.Y.T.Y.T.T.T.W.$X$X+X+X#Xp HXDXMXzX/.y.|.}.}.}.[.8 ",
+"YXYXSX#XH.B.B.m.XX.XP.V.k N fXg n.c R.E. X.Xg.# k Q T.T.T.T.+X$X+X@X@Xi NXmXxXlXkXaX}.}.}.}.}.8 ",
+"YXYXYX#XP.m.B.N.A.).~.e M PXfXg GXi.B T.Y.Y.p y n.s.r c n.!.R.+X+X+X+Xp pXnXaXaX/.f.d.i.M l y # ",
+"YXYXYXdXP.c.m.B.B.A.0 ,XPXLXgXf DXmXg j.Y.V.a sXi HXDXpXc t V 2XOX#XOXN w $ $ * & < ; ; , , ; @ ",
+"YXYXYXYXn.H.c.m.B.N.B s.HXFXgXd nXbXcXe n.Q n.LXg <XDXMXxXaXp.y W 3X6X2.3.E E E I P K F S D = YX",
+"YXYXYXYXT I.c.m.m.B.B.e dXmXpXs lXlXjX`.e a IXKX<Xi mXxXzXkX}.[.p.e W 2.>.E E P P K F F S D = YX",
+"YXYXYXYX4 1Xc.c.m.m.B.Q i xX'.e jXaX}.}.f.l KXHXDXy ].xXlXaX}.}._.r.@ Y E U I K K F F D A A + YX",
+"YXYXYXYX- 1.! c.x.m.m.B.k S.{.s e e z p.d sXHXDXmXG.d kXaX^.p.s s u.r R I I P K K F S D A 1 o YX",
+"YXYXYXYXO T 1.Q x.m.m.m.c.q |.|.`./.f.e.8 NXFXDXnXhXe s e f e.^.|.f.< I P K K F F S L R 2 = YXYX",
+"YXYXYXYXYX, 1.T v.M.M.m.m.B d }.}.}.aX{.p.q M hXxXzXG.^._.{.[.}.aXy P P K K F F H 3.:.*.A + YXYX",
+"YXYXYXYXYX+ R G 6 x.x.x.m.m.c e.aX}.}.{.d S.F.k x `.jX}.}.z u f u t a % < % < < N b b < & # @ @ ",
+"YXYXYXYXYXo 4 G 2 6 x.x.x.x.m.u f.=Xf.e h.P.OXOXP.c z ^.}.e i ,XLXIXNXvXhXpXpX'.<X^.^.D.f.r.@ @ ",
+"YXYXYXYXYXYXO A 1 2 7 x.l.m.v.z.r k k m.m.m.K.OXOXOXH.k f 0 fXg a.LXFXFXDXmXnXxXlXkXaXaXf.e x @ ",
+"YXYXYXYXYXYX - 2 1 2 7 l.l.l.m.g.s.x.x.x.m.m.H.P.P.M.m.v.$ PXfXN u.DXDXnXnXxXzXkXaXaXp.e D.p.@ ",
+"YXYXYXYXYXYXYXO = 1 1 1 6 z.l.x.x.l.x.x.x.x.x.x.x.x.x.x.x.q PXKXvXi.g nXnXxXzXkXaX[.z s ^.[.p.@ ",
+"YXYXYXYXYXYXYXYXX 3 1 1 1 5 Q l.l.l.l.x.l.x.x.x.x.x.x.x.x.q KXHXHXgXi.h aXzXkXaX|.s f /.[.}.e.@ ",
+"YXYXYXYXYXYXYXYXYXO 3 1 1 1 3 n k.k.l.l.l.l.l.l.l.l.l.l.l.q GXFXDXMXhXa.y pXaX/.0 p._.}.}.}.e.@ ",
+"YXYXYXYXYXYXYXYXYX O : 1 1 1 1 7 z.k.l.l.l.k.l.l.z.l.l.z.q FXDXMXnXnXhXd.w p.w d.|.}.}.}.[.r.@ ",
+"YXYXYXYXYXYXYXYXYXYXYXX - 2 1 1 > 3 m z.l.z.k.k.k.k.l.l.h.t DXmXmXxXzXlXcXS.z ^.[.}.}.}.}.}.z @ ",
+"YXYXYXYXYXYXYXYXYXYXYXYXO + > 2 > > 1 5 m z.k.k.k.k.k.l.g.t mXnXxXzXkXjXjX[.`.}.}.}.}.}.}.}.z @ ",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXo X + 1 2 > > 1 4 m j.k.k.g.l.g.i nXbXzXlXjXaX}.}.}.}.}.}.}.}.}.}.f @ ",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXO X + = 3 2 2 2 > 4 7 n Q h.$ M u.p.d.f.D.^./._.|.[.}.}.}.}.}.d @ ",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXX X X + - - = : 4 = = - O . $ $ @ @ @ # # # # # # 8 9 0 w 8 @ ",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXX X X X X X X X X O YXYXYXYXYXYXYXYXYXYXYXYXYXYX@ @ @ @ ",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
+"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX"
+};
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8437c651a84d4ad38d5f24b435b177abdf4abf61
GIT binary patch
literal 83674
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..09decf506c730abab35b0c3e09ed742dddc3ca59
GIT binary patch
literal 25214
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
ZAA|UtRrun2)sCUVx2w(6M@%H}e*ggNoGAbR
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..63cdb4032e6817b8e0ee2f1b7d0b2fbcf6bc2b52
GIT binary patch
literal 25214
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cd81a18bf063d1a81046dade3834f6bdc8e5c054
GIT binary patch
literal 25214
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
Y4e-PNE8t5ISRd-!)pj!SKaw8!KhN30BLDyZ
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..525d9f620a489e01d2bea8d5681f999f1034e192
GIT binary patch
literal 25818
zc%1FqcTkh*+6Q3IH)7XyEh{Pkk=3>B(Sz7nD@yN3m0rYx3P=r2ny54>0-**%FM<e!
zUP1|>2LcF!h2BdVO(oy+Ca76Gy1484!<qLtHyI}2<Q^~Xrvw#}er~XYnWNxi5BLZK
zA1A=azm{+^pN|1wf3}wO@jeVVKX_onA3w0+k003Z#}91yKhFI8{LIV@d2(`ic&NXx
z7d(>5li-=}_!6+;|0W|N!*w-P*v#};3>p>S>+Rv@?qYk-&e+|>&d2k9DC$u{EG9QQ
zv$3Ima$@3>KTD@i4-SrXbadC%Ju4}x%g88=i_1Zw9(#C1+u5UT8hdwl53+whZ1`P6
zrBbR1_@ww4ulvrnm!+-bcO%6&+ls7q5?$^j!r>^)0UmATwp_n__WZFU2X~*`zgKL}
zK80O-6nJ*Za&D8@^o!`mUqrTZ%kb?{+0U=Tf70l<i1{fQ`*SMyFK9g!H4K)xh1q@B
zu(Gm={Y7EJ@06*jsq)g2aFoBjzNod-Hb>EA_7|2~om*;t1}bCGjhD5KT{72{b$1pI
zLV@DjBcg7FwvVfIOl@_}eCd)m;94?yr-<^GbxQd@7*6(=h7G?*NR7m(h!8siaeJ}V
zcITH`oL!(ZKg(gDEhvA_f#t?te7{TBp>grgXChmsgNalAwRF!)+TBv>UmITX%E`gA
zzdCIA&jQ9TKL>lyLdQ;GBN#l31v*IYvgT2_2accXv5NPwtZi8S<CimW?bB!`qhHNO
zMw5hAWM=<=H9Vu`mzq|>-UDp-4>CGBl9Cu_r*X_tgu~(-i*Bj;xusV$_~q`~i=$9q
zDV`I`wkT{y_iPG_v3Ux`WOOg57)22FoiUNOj=i1K_PL>ueh?-ukG&1p@b9Ltw-*y0
zWUsK(?!p2cs9Q4I6x@&>t%AQ$!0?>5rFUZPz#PQ*VkVZ!7+6cb6;iZqw~C<hgI{=+
zPF-?0Lf6>mkFy(!Tn!5deahYmZ1}eVCNL7^<tV)gd4569TxjVPO@2v#AC{5?vm{v+
z^5<fHX{U&;iECK#$eY~$xu;CV$i|6V{u!GQGOD(T?s%GA*1*ogS9Tq}s^gQ7%o_M$
zD1Hm$;rE!m8QAdK1NOkg81x<K%~nDSdS*h)G))vFf`cTOVp1U}=@67mC{(ha73=w3
zk_I>LJi<@B1&lfUb4jgZMjmk+w~Ctt76vuYeXD7J(W#hxRL=G1t<o3m5-iiZSccMO
z@pnDq+53SFzdhg(<EXL+nm{3_OeNMUIh(TRKA_2kq2!sR04n^?#e9CRoZ$^ypIX|x
ziix*RpATPg4Bfn4;$B)qOxtugX$mm<RMQ?*P+f3TNt5UmYtBiUgquI^1cq|fDGsht
z?ES!o-<T$1!@a8)?1h<t=a(8QAmn}SNweHSAso5jfQ#WMP>K;KC1xozOEo$|Ee5Up
z{>k5!t{a+rHqFfEcJ^tTd2{i}qw%lOyJnL*XIPAZ^$U#7B@`{slGW>l&l~ugCbTNr
zr(4;Du(t#oeoN>yT9~H|IE4Z|D{zyL-=g66fHiesx`5kxdzY0zojsy^TLq0$1r>=>
ziwste3BOT_GbRu~=|4?XLkFF@WwZ7dVI33iqL;6g44n4yYi4$g6b--0?weyVMn79%
zd|0)>cmvbA5g~s<*-g?k($q45y(`%8TT)(H;&+AL^1@Q2@KU7gCS@O2Ip$Ic^uTDz
z`ab-bOG5t<;gEz4;y;&ELP9m8gLM)kZ<UpqR#lr+RoyJb37I)?{afvnh8H+q%4s=>
zT{Jr*VNx|dRYQGOKK{0l$@t{;Y$B5}tZ9MqemTTwmEOn8Z^-$p^3|JO>|Mcziw=!O
z4RE{`ZYp3aveZsyy_(k@`LG2&6;R<pTlXs}Ic2d<9$@v`yz`>C<3m#d;dXV+&5|-<
zORt?rv_!6jAhU*`ZOtlq*>XYN-3neY+4s>IcLGx_JmZZV!}Tm5son6D*K-k9vlCXd
zJ|}A?D0Y+ol)?VP>U#wA_6Zm)St4L~?E!mZu;HRpU0EJ<?NGXp${p!7n(j!}jt6aY
zk*G_U;Qiv4|4{Q_zsOmnc5mOOE_m5VK-rS#_e<JN$=;RZd!=NDLg;-_!{EBpmpp{D
zeJ>aU9+q_A<2kK!berxGPQ4?)=pEf`aBQRgu??n@d_nfoA&!!vPGZKwo2+E_R#sL|
zPEzOQ-mo_Y8!j&M^YdtTGpxTxmcOR%-J1Xq(nF&zMFnd_2cI^w+9_bb!da+7vZ_ng
zjsu!I_9)wh<tKGcV_K(C#3|#@GRd1ky1oU*u_TMMS9W=$tncUIl|rekjn!O%R$CsT
zxa^VqG9TGx9?~2Uw|>L=i4{l4CAyw)6y->b4*a|~*l=+f9vbw&dA1JgYVV?{7``xm
z>X=}ym|#Ue&vn0uSfq7Zq`ovsXuTRnP`Z<J{<7cB|L7e*Zv?Im1%uEnKCxpaqKS6k
z<TXBi15Q5W4cle+oV<BX*V`ZfXP){(&MHaa=z-MBD-(5AM5`|kS6LpYu*_F>nWr>|
zn<U3W4bJe}du@d|d`xAgr>8&Z4K`d{YOC;R4-}FkOqId{03bMRYG8u3V}o_$LwJv>
zs@f&FmW=)?VDR%c>GfMA`2?;Wzj#mLR`mMKqS)tyWn*vh2B4FQ>*Jc`t4?~940%-2
zY_UU{9>u3Ld^Yna>^gSsyn)}Atrv1^e|vg$WwPE1Fpv?d%Yzh_`N=IXI*M`Fh%9we
zM09qvf6^OlxVR*t?&6Y=mm_=uAXq=affE4gC4`7t+wuKJE3Ap`OBh?e>Xb{tFu0X}
zSW$mFVWev4R!x0}8-0`AJ9ARn?1ZExIBojZ(!q_vv3OzC)%7huBx?Jwe;u(_J&|v^
zF7w*T#|A6ow4ikr#m0C?jKf)sqcAJwlipy%MFebyC`%dd?3fRLI&s1J2_gD%L7TY6
z{qx(vjSk&7v2yk44{wvX;;8EP^Er3RY}|ONVu(T@zeSg~fP?7Wlv;3U2x*)G-*&GY
z(zeeVm$OXVu}fA<S-mpFf*2xFV6rOf`bw~_#%nJy`pQ9j<6Q|3Coztw`$nI%2OBOT
zU<-10HPC&U4wldlfQHE-$5gMY-0&(MhTiZ@=^(FKdph?0Z;@=1S~v4Z86^jtmXN<6
z@uY$NR#w|#pMZ8|4|Ii(0_U3sx<}c#tZ5Y24oUq>S`C>tU1fJ(;_Tbgbjz()7n-iZ
z8m(e6f<+bVjo^smF2&(0&JkcP1AeC1+k*`kk;%zPqof$E#8}oI$O2Rk^jf+0G_H5F
zmi7)m`8KbYx_aFi*6#yDs)n}yDyI|Tfy6~=csK|N>lAdnUi;IT&_Yr^INx;5`W3&D
zzvj!yB`m9|5s()hT9@Ttm+MhmsCo6q!QZ9C4h!i1!D}VD)m?s5sM@+1%@yE?6Cl6L
zTV~mPNe*vA!MV9P_V!@IMWm=_Oc$G{85_>p0|DT*lu+f&Ol~RD?YrbNn>w3k=kcSo
zwd>D<eGl6`wePsDyt4zc9Ai_Cu_{4t*l<$S&{0&;3O7Kp^hw!sM2l;$+=ZKFCK(~t
zwWZdL^;X1stA;wOhFW2HeJv!~Bp_eOEaJ2rav#4M=hh2rRtv6PePaE(6I(X^f#4L}
zwd1U~lqvft!iIm9xp{_D2U+_`I=DuFQ|RTS5X006h2k>N%2wsl@(VX^uUva73|m2>
zPyMt(sGj~#O6$&9gIhKg7-U7v4Z>6Hn$rEEdjI!-NB@0Xi<4LKr1lNNSRe3Js0eAu
zI-GS=1H=eP)}0pB_DZiyelY_UWN_|bZJ4aG%^9^w?Y<S;el@gV+Yb5J*^i?L8~#;r
z6o&P4ibhfb*ai&}L$0KR$rj^9@vSPjQuCZ}i@b1EFV{8e&%~D0{Jc@f=3&h5B05*9
za@A_9r0btaHMD~|>m4c}tEUm*W{Z!qt;9fu$JpR8NMa?D)QBVzKQJCWt)AG>1NO{>
z=QH5=>QhZ~$Q!as@BZYUWBhtRgGQVB&>?L2)x4Q!xDPVyUeBl}Ca_jf<@|gR09aCD
zmJI<~7ND()&=>DI{<KkO+42+H52=X}NGv+VdZKP^u}O8BO=Yw#0rRI~O4>BwkfbJd
z#)C(dD#m6DhTf!i%|^G-tfTR}1oV%}*_)+wup9n%NM~Y#@}WuC@T(zCF`WAu4&84q
zB_)F)RL@Kku4q*$E;hr4S>%RW=0^ZP>ypUZ<w++TeAaM^UdSU{tS4Ts&9|sZgsiGC
zcA%=?R~7UORFGt}ZFMTLxe?h67>O*#1BVnEr=i~pCpGuUUwN=`tGI?k(!mQB`_Gyh
z$2Wg4+<RDmczFCnld$1e6E+GNf>Mr6(0LLgT24|aD!QE&W}Y2xnHOPMh&IE;X%R}L
z>f5C1pD7pR8&{<*Od2~Ks2XN{d?v=WvD~JGglr};4WUsqDJ?sANVa);#xowfbDz>V
zd1OS*5ZD;~YG{8b-`jcEzzAK-GUVQ+1n-B7OW*7QAY_=FE{>~LEG#j}2sO`!hS0nq
zO1Gjws<u_S?wMXyp*21ZS|LA~y&8;t?VpQ@Y1>#})7oOw+RV;)8HG9~s4A<0<oQ)T
zFr%t?<PH1AD0($?`)`*F0&ot6liYj??0v$9Urr(Aqv6F8k}!^VBLmGE!rKLyi-cN<
z+BWrSyahf198f+2ey&%?R?KH?TZy(T!v#jjP{ruxk|hG?Bu#2YCctHdKz_^G7-QR@
ze?ja;pvfasHt$eSbVxcPXvp3tZ20A1-Y=w1{S28Fx_sIbV=#o+Fys7KxvB>Fs)n0o
zY2XG3ZVBL=$y!1eCa?zcpyp9j6*8+zzmRaLqDrBLAVDGswc`c5D){>=&-Zskc0Z5o
zY>#^WEV89Fs;MQat|=@%RKZ#QcP*)tg8V`U4~QN=uBf14ec3+zife+w-N(9j)3w~P
zkI1<$TX9lV!;!sD*zgMhSLg?W3x+1$47C>wrD%+4W~gZnT8_}5K&Z38#URU=*F5GB
zy5R%S6-aEEc0KOG0B$d}6hSLT&?*r0N(7zozQE^r1i4XTyfb2~BY3>oZoK}=NNeCo
zi~n%5?`ZDf(I?y^soX<}T>Y4>ZI8BOS#J$9*#1ys#~lSeQ}JDTXMU48b?&x>e|9$f
z|1B1isdpb2Qq>m>s~(1SR<Ti9s7hJ6LS?OaakMoq3R#Y^uRuo?TQuYejbnKx^AO}h
z1f>{3#W4Z#klR!hVyYT3Rl}@m1icDDtvfy0Vot7=qTmpd1j*61z>(HR!;MbkncQRP
z+@opS!^wz&m~Fk`Te<=_y?nU7{r<X!J8LSeRwwALD2n&|yj9rn3jsGn79g^Zq4^5>
z#Ij{bIW<`pUvE~3u_}s0;-b7uJlZmkjAd|-W4R}C5R>@`auI@3f}oZ$Cy)T4P1ho(
z>$s-txuC~dreqZ~kN_FX>O{TXXj{-I$!$Du_jnff*i&w36d!XB#%=FIb9SRPz4HCJ
z!+l+&)7nbpnjq!X)0DB#TZIk3oCgCCooNr_%IgJB;Ubb|Ar{>0t&1Zc6*vu~?Ho<#
z28I(@?#WyPx!~gv0wrJt&}QnnW{6y~MCfs*0g{BKkpN98pr+t>$R&ILAN&Y_AB3?C
z9@cU?7{9$QlCwK_^DDm%ogV8*&TFwZR;77=`dcSfV8bux@dV^{tD9le1%2Y!$B=q9
zqZS_t4DE_S+fxpLzihDjfi-X<oBQKJTFN$rbxgn}t~nCdET~2<KnhJ`6|^xzqliOL
ziXeROBLECXN@PZIj*O)73?(4?qqg>hY<}&(;f2RfB$u^8mp07M$^W%a*zn7FF$2*-
zJ0Wu|wd-RjbuzRw3yibEv(l7CvW3SBrN*A}vJ5GBF?#P4YP0c2!y0G^f!ka&*PB-8
z5nw{2Sj*fPE8iOyGY#|kMrv*iH9Z`vu^Ftk9;mYGPZeA+^!zEucvVrf>zDe34ZoT+
zFp2{VjaLloUWie?lVSa8S}hh`5r1l|%#hNBrF2G5<nd2r^H7L4Xx$0)fqW|d;0MEL
zmLZ92u7zu+?aWl06s_a-RQ=wMTO!M_kawinbGXHCh~zWa=siI67^t@I&sFUS<phQ#
z*L5NKyWYN;{Zf;#;a4*^&xjsl*z_{AUO{tsy^C?Ji(x_P^RPcRj6Dw-cIS|r-DoeO
z=mW*{!4mpFA(g1QU|73nigbF0$O{<31kzqRQ+lGw-LZ6%47Ev)S|?1a;9Xct^SMV_
z9zupq?+t5Q`eS&(9CrHr9ICl-a`4qxnuHDiDsSf*1r&x$KjUf_<8}{ZXxz=PE33gr
zX;EH7hSc6XT3-RJzYqX|qIJj9pPA6=&(dD|(E3wpU0z`QWES^Si#Yjp2#q8=@hWQk
z1$w;Qn_PK%f*>{4<OE$WnjyoX2Dd?iWq+MpUko2O)5Pelenl+$dWW##;sUOVI4ZQR
zn)N_O9P=KAb8<{afitBmhuV`%?ain5<<t6sBzVlD^=H%iv9$h7YTr|8-;*hl1nXh}
zieAr8C-735bRffyu(9VMqwT2CXMrCKhjD7dg|Y*M>b=psQjJ#EWT5`CH`wr7GV_kn
zJk7`?L%+{(8<_V@Pi(<LjFcWQjk&ZwFp#;_J_wN72LLmued(0GG-_8cbj`139!H^f
zYj#YwKN#<fSTJm38n!$dCi#Lh&0wR~K!ba4&HVx&F=B4SV!DD2|3SvzFq(>z$|J8$
zf<?6_n+mEI6qeeXN$t&`^rlmLpHO;IDLu*bN*>l5ZD6aU)(DMvqM^6jo`;RK2ai4r
z8fgs}ZuTD{`3?d@qE`?8PKy1po|cM5wgDUd;|z4vWqBwLG$&BHvnV~8%*vqjq*HpB
zfZdPDucK(?ywJOE<<PyJT5({!{n2<w_*i@BXj||IG=%RB8@)+sy3x0fkcYY!-vDg*
zJ@RIDsxsLFA8j(ykw)%HCwHe)x}T7{Q^^3ZE15#n1D8gqa0qe*|3tIRSO+wOqwOIh
zZK#pfpy8HBL(P7#@UH1DLd2Z#`FC%>>D6Jw@0Tg^NJ*p}9&@F)A#CC$(0e@jI(hPS
z(&URM3T_X$2ZC$FM6*3uNXI(DN87_jp9KTJ!A9TK%xh0w1k2;^&dt#O#_Pg{-#b8(
zRDj71xQ>sx{-X5WU`y0Ud)z3|hKxHzF60@19yZbzK0x&Cs&F8sU&nfgXL{?mSES8O
zQUCTU!iN8|yq%kQS(jIr@u)o3B@bns;h`R9A&`Dg383Mk9O^SsJ<a9cx@`W}z=l75
TV8b6ju;Gs%*zm{Ck|qBS4j}=M
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d50ecd1202e3b5571fe46b032d471fc560be513b
GIT binary patch
literal 25818
zc%1E=2UHXJ_Q!qyBR14^Eh{Pkk=3>B(}&ntD@yN3?@cVIfYi_gK~$O)flvdX7eNF<
zFQJ6c0|5lVLhmJwrjq|}5>R|@eNSQI<9og{Cuf33=6-VT{oR=`{1PwpmeF+#Y<t1x
z2ey-7`^Pdi`teBc{_}N=ZBDc$F}ao)GQXA>GQXA>GQYkk!<m_x$;nCL*x0~8e@}N8
z*b|9k;K&#JFP8MVz68U;!GY?^a&%fs6bgy(_406ac5$@6Z)51<XyfVjAPDg|HVT!M
zkyck*Gd4Q<Z~vA`o#^WuZf)(Tu6|xvSe=?$6dj$3Ks<4Ejj*vr+%)v)=;-_Jf5UHE
z{{=%bnN)$p#>YguKe%gsS;9hQ4_su6wIHj5&`JkE7JC5}u(y`pdj0ab3&)Qh+H>l_
zKH<IlWq0qD<=iF3wq11d4?>%M5Zu8b$-P(c0FM^WDT5P&rl%!s&nrH-sPRZhKS1;r
zYR?h<va<Rwc)H)D{v(Ft<Krbog&_zZTU{Yb@$L3PD{L<=w>ZDt^ekjUp-q=Hj;ole
zOS#+?@kao2?-f+FK-xxE*(WvKO?%~--Ro31b|;_ohdw2LA0+1&Kk08wf1M$r4j&#G
zXrm`$E6i$hVY%74S#+l7SoAdcWbWHBxXm~B&!RR+Ow5bPu*Qi1{J2jQ)vb(juZaAI
z3{R`LXJ%r*#(95B`YQ}U`sHMz@0)4ah;9OjXEuutqIX&SnDj&Y&*?GDbwtWKIOoZ$
z$>^2|Bpsu7<wuN0u}$!_o?m5nR>M0fx$x_q{kNe%&2VUFFflILM(w!0AdA^~2D;^@
z=a*km<B@(~D}q4$jyX>%SR>G>9aD)6j1A)mI!2cgl0hhL|5+m$%c$G&&7U*m*Y!t5
zXMfcId;|J(47<C!P$B-dvb$_9&Y}apCAnSJ8UB$~z;75ZJg;f)5tr3F4Pksa8AZqF
zS4F%Pn7@6GBA>#;AGqXCtGE~-D{XT|<}(z$8tfbN>}$t>+4UzFf(#5pxZ6u?hF_Sa
zXUf0)iaL*&k0*nYDBWTV2Yzb$Te}3cjhuoD2H$4&Oh2Pz467Tx<&(MvCaGi{=Ypl!
zr1$PRa%K0it6H8p@bumf3`K6CT)m$xKp2=>f5Z^<z_>`{9f>U#{Im2-_*bYK$%+Q}
zi_(dS2O=Z_5t2cWr9Ly`_---1n|B^#N8bUAnLX3-O~VGR(VMo382RP-*HXPIC;+2F
z0r8l$)A!pXF4@GIr?fK|N|?mlbB$S;NHDMdh#^?S*emXZGLRp#vFHZ*yT%N3AD~GG
zBV_271rGVt^yB-a^>0{vR#D!Uj=p>LV&IB>(3Tyd_mgWQn<qjD;{c;)1?6EW*%3n)
zGm2QX_Pm%;i0P9yz);#U(atG+VIsl2`dx<g_}cqdFWL&w0bW>cC<~MEyf4Av76ieO
z4)DDcf&i8aMaa{wK(|svsB$DyVea71^4IlE-RdW2vf8>eO+47SWsum{DeY77ZIcX)
zel@cg?-r6Y+zMGY2wc$fF^+ALvrVzE30$yXFsXi<A(cW2cC!MjP(aTDOcF9%WxXFV
zvJPYy;C8{*arJlSj%wdlL?V=c!w|}00jiN9H;OQZI2^F<vm|At|LI#+>wXZ>GV;iO
z^+sOLVLy+0TI*o`z}t-OX$HoK=d&0emCs_lfoj?WlR2s2EM^>LZ0@^|@nA;%Hp7yl
zLhma)<`<X41(w65HY<2KNz+Rupa)V*%Ineh?4r7lafd~%VE<B43=C3_2+)cPyH#9l
zTwY;RUVgI(!*628{!iu8YVKfpDXn2Ae97djs8RXIcqRFL$;i7rI>x7OrsC)rgX?E8
zJ}7}OTBLMy@#wStsBrbB`$EQp8TA_sDHO7={k0HdUTeYSHj*2Z-S5Z*&(c!_4)Nc1
zKu+Evow4!&)o;tLOCt7<jB&Wz6_qy&iv`TxcOBIbycP&g?}yr&MZ$`ed|Z2E-6Jy|
zAXD%7C7HR!7}$sCm_Js&;U=TwD57j5AZK}A%7jn&CeLZT14mT%^6Kp8)myfVSO40>
z1r7<*={Fcwl$H2jJDlRFct>Kbx(l4q@t{T*hEPET91ywui?ZwdLC!3xW5<3~zRM20
z3g(<Yt7tkTc$5+E7ZL69pzEUg0o7+zT=_M<F6#Lm5wqjwJfn4NyY^8woufbK9NVII
ze3S0+jmBc!{<ac<_F_Q}!iEByEu{99l~s(5k*BBME^tVgPQS)*W@ZNIVuJQjOZQRN
zzIPJ<gy<m=D&YZY5dmimEOzngG2qNPkErCBzVo2^&b<mY!8!456R4&M1b*Bws95Z#
zzqVJdVHCkE`L#{<5aZ|Bxx^8Q>!Q?GA(dAK%B^@Tv%*tqg{uTh=&hg7-ogc;(s52F
z?S)v9BK#IU9?Ym;V>r;?=X3L1HQLG6QC%)%HvLpl0UD73a^7z1e-JcF?l4PwWfa?V
zH5ey<C;q}^?_K}WIdQ=Nj1IYd&=eonIvH9|Ie6+CH;*10x5CC9QhQI`Jg@Dc=Zi5-
zdMRxYFMI4@(&g20TB{;dSB5CA^pjoTCAGp$g2h>k<&hd&$nAaB0xX`!k`ogX3m+1u
z)2}hCD#s>2luZaVmJjv?0KsZg4Hcjn6`&mx$aPFf$tK>ZaOg)~z3;b6Y}hKs&3pC4
zrTe0{A~tLhLci!M9)6qM3$0X~o>Z<}bIP@_-?fZljqX=>EjX>_xrI}9_wj2N^t`uj
zyO?SH)3d9q6LeOAgbY<$=`Xv&TY46wy)cWF;Bsd<SX*n$!iR+E^lJ>`5%)0h@XMiI
z03fKJV8ICh>cj>LS=w;_OCz|R>V+F#x#qNE?f{s|KUCD8P8ulbJ6Dk3V}{;lbWNU;
zFgYn^4py5!Ra7uB*cZ%JU2U(D!$Q{o_{UL8rIR_v>(j2SexkQJS_7)9h<O<A2(#Q3
zX30xWT=<YMojzj-njykm(jz1C13<0l0NvO?-Dv;K93nnB&0wNK){U-aJ@er*nG=Sr
z`XGmGkL0FJr%U@uIO02GNh4T@-b<_kLqlNQIQX&qB@k`f>=9}6xShMDG!#_J63y^|
zg1JU((yy-ubu~tF7NeIm)En=KvN#B{gg-D?l&CP5K4S=4kc*R^_OldFLO%f1PY67&
zbY1a=d%*y7!85UyxMtm%sJXjH*6~eSIK>STe9wr=JP3VSOMNG$X}6zOGp!RE;lsiD
zrk3hjJR)Tr&c0JjS4E>X&8ofl&MS;<OR{!}1#6!18nnS021Za+L2m?092apGClMB3
zQ%UfdT9m*rkv?NMHa2DuAE^-+#pr<yfU17(tJj^ubPZKe-ebq!Wp|NT*PmtF4-72t
z-}a-lR-h{!6RzfJ$1k9j+xlkRcV~n02svPV(>~>0@LJ}Y7aO~Pl#-fnc0^Ehx=(eM
zYgL~5)f<O?78gFktNja?h0rz^nax4U>m$`yfhCTw%nA?56%WK%JoNddr>7SsFifP+
z80L2lYooK(qe2)x5CFWE7^IMv#vyLJW4BCNeOtrS40edJZo@gy_s|{V`%h@g+_i(3
zpsY$z7KO--8&4_e+Y8BAV0uaBo{4*pYOwE<zIfBbC^gWss>rgg#sXhsQCn?MTO}Z)
zs{uzE`R2%*gr1Rx@8?lw+jem+D<3QC$qnmIZr$_?jE!&i&T}H-#!IRA`}&mO^bF0R
zm8khN1&k436?!>7P(LYDwxC$3tVyA$<l>FntJj?lMwb$(<KJ!Muc5vd*SK>|@0L|5
z3SJs{1NTg`vgm-2&j0=2v45V>VB-=yrFla?$`iZ`8J7&N##q+ZLKq>E)n|k>-BYR)
zUQU974Awo2hRLvX=8#!Z$E~QAt3kEfcgjpnEv4e`=~IRn63y}jNi9AWv_ZYNz$=Nt
zQUzEcY?C6U$TTy=EIUNW-D&NHvr&bW-*4i#dKCGypw^Z0Eaj?liJIr)wJpHsJc4+o
zbkuyEt+C<OWhls4lob{Q$Ctqgb#May1IA-#RO4zpLC=hRF$tEho)r|k?0$=sj(__)
z#*YWpD3tNV3J+6g9>cdYG?zY_&6`QpxL8INRmjN^1ON*QO)?;W=DA3VeB`Bj_TO#d
zU$OG!j>F2rI06HmTn%2ks=%ls*{UqU8i)GCbdpxJ7&xJRKE^}G<V%OAa{J$=v`<Ae
zQY<5|yLokwN!ywvw$5kx(_yXAQPLtt=<lz24DsW%yFE0!j<+iD2_Oko(~<>Bn-mKQ
zOwhq*Ss~^*p#Y#|Vc6}G_>*>?YuSV@X5%i^;4fF@n3cyttjbX~z!h^YhmJsoNJdy!
zB*7c%;0*vHo`Lb;VcEI~=&o>lL$}P8hnu#EsM*CIx@dOboUvg{!v}`@j_3{yj4Wb=
z{{EWBFn9=J2&@nltMxQesDz-HpMN_&*fb-=JUi4p4{3sl*1#2s*EEaQJXgriF)UA>
z&9wRGfGg?#cqG!guEeU50B<1B8A7ROR8)NEuvEjuq+1Mn*M9l)GVsvKe$W`bD=EJy
z+~0LX&j4A)V92pseyJb+zUCNqPt5{^7$&5MU~1&@3XM{OOf#S)G|dgyF3lCMYLcja
zu2Y_8iH(LT<iF)!CCawyQ`2Eu*X3F@HCi<_%*S{cfjG{mB&7!D{87d)wY*^P?fk|l
zbTw$lPbzx87`wbN4sO}SjnLm;a}4uH9~oXMBnV*eH&T&|B)pxAx`e9|t!h@Sz?xxW
z!2;zYz|ZMb&oljqbras2!EhEM#8A=T=CWnH=f#XF2S>rMf+N0TG{&fA=o`fDIEoBB
zam!9wIlK6yeEN$Up})W87^3D1sY4G<vXLs2{L~O6Av)MFCrY}!R;Il6W^po@0Kt?1
z)|reFI-7x&sE3u0!^`36<+^z|mC|zAN}MPG$KQhGYcJ*LDZ9|q8rJb5tgR*d#q+Sn
zrttd4@ap>Dlpxu=x<6}(pW@@;KXg#�fcBHOtGkAy=GY_3k~<zL%omoN-jzX~n8j
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
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..81580ddac4da9e73458587646ffbdf93e0284f9a
GIT binary patch
literal 154542
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